Decoded picture buffer operation for resolution change

By checking maximum picture dimensions instead of actual dimensions, the NoOutputOfPriorPicsFlag is effectively managed to prevent DPB overflow during layer changes, enhancing video coding efficiency and user experience.

JP7802972B2Active Publication Date: 2026-01-20HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025004804
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-09-24
Filing Date
2025-01-14
Publication Date
2026-01-20
Estimated Expiration
2040-09-17

AI Technical Summary

Technical Problem

Video coding systems face issues with decoded picture buffer (DPB) overflow during layer changes, particularly when using Adaptive Resolution Change (ARC), leading to degraded user experience due to improper functioning of the NoOutputOfPriorPicsFlag.

Method used

Implement a mechanism that checks for changes in maximum picture height and width instead of picture height and width to set the NoOutputOfPriorPicsFlag, ensuring it functions correctly even with ARC, thereby preventing DPB overflow.

Benefits of technology

This approach prevents DPB overflow and improves coding efficiency by reducing processor, memory, and network signaling resources in both encoder and decoder, ensuring consistent video quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007802972000003
    Figure 0007802972000003
  • Figure 0007802972000004
    Figure 0007802972000004
  • Figure 0007802972000005
    Figure 0007802972000005
Patent Text Reader

Abstract

To provide a video coding mechanism for a decoded picture buffer behavior for resolution change.SOLUTION: A mechanism involves receiving a bitstream that includes multiple pictures. A no-output flag for the previous picture (NoOutputOfPriorPicsFlag) is set when the value of the maximum picture width (PicWidthMaxInSamplesY) of a luma sample of the current access unit (AU) is different from the value of PicWidthMaxInSamplesY of the preceding AU in the decoding order. The decoded picture buffer (DPB) is made empty without outputting the contained pictures on the basis of the value of NoOutputOfPriorPicsFlag. The current picture is decoded and stored in the DPB. The current picture is output from the DPB for display as a part of the decoded video sequence.SELECTED DRAWING: Figure 8
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This patent application claims the benefit of U.S. Provisional Patent Application No. 62 / 905,236, entitled "Video Coding Improvements," filed September 24, 2019, by Ye-Kui Wang, which is incorporated herein by reference.

[0002] FIELD This disclosure relates generally to video coding, and more particularly to improvements in signaling parameters to support coding of multi-layer bitstreams. [Background technology]

[0003] The significant amount of video data required to represent even a relatively short video can present challenges when streaming data or transmitting data across communication networks with limited bandwidth capacity. For this reason, video data is typically compressed before transmission over today's communication networks. When video is stored on a storage device, the size of the video can also be an issue because memory resources may be scarce. Video compression devices often use software and / or hardware to code video data at the source prior to transmission or storage, thereby reducing the amount of data required to represent a digital video image. The compressed data is then received by a video decompression device, which decodes the video data at the destination. Due to limited network resources and increasing demand for higher video quality, improved compression and decompression techniques are desired that increase compression ratios with little or no sacrifice in image quality. Summary of the Invention [Means for solving the problem]

[0004] In one embodiment, the present disclosure includes a method performed by a decoder, the method including: receiving, by a receiver of the decoder, a bitstream including a plurality of pictures; setting, by a processor, a value of a no output flag (NoOutputOfPriorPicsFlag) of a previous picture if a value of a maximum picture width in luma samples (PicWidthMaxInSamplesY) of a current access unit (AU) is different from the value of PicWidthMaxInSamplesY of a preceding AU in decoding order; emptying a decoded picture buffer (DPB) without outputting the contained picture based on the value of NoOutputOfPriorPicsFlag; decoding, by the processor, the current picture; and storing the current picture in the DPB.

[0005] A video coding system can code a video sequence into multiple layers. Such layers can be extracted from the encoded bitstream and sent to a decoder, allowing the decoder to display the video sequence using different characteristics as desired. For example, pictures can be sent at a higher resolution / larger size when network conditions are optimal and at a lower resolution / smaller size when network conditions deteriorate. One issue with this implementation is that the DPB in the decoder may overflow during a layer change, which can cause a degraded user experience. To address this issue, the NoOutputOfPriorPicsFlag can be used. The NoOutputOfPriorPicsFlag can be set to empty the DPB to make space for the new picture. This can occur even if the preceding picture in the DPB is designated for output. In some video coding systems, the NoOutputOfPriorPicsFlag is set based on a detected picture size change due to a change in width or height between consecutive pictures. Adaptive Resolution Change (ARC) is a mechanism for supporting resolution changes. ARC can dynamically change the resolution of a picture in the DPB to match the resolution of a subsequent picture to allow resolution changes to occur on pictures other than IRAP pictures. The use of ARC can prevent the NoOutputOfPriorPicsFlag from working properly. Specifically, ARC may change the spatial resolution of a preceding picture to be the same as the current picture, which causes the picture resize check to not work properly. Therefore, ARC can result in a DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

[0006] This embodiment provides a mechanism for enabling NoOutputOfPriorPicsFlag when ARC is used. For example, instead of checking the picture height and width, the decoder can check for changes in the maximum picture height and / or maximum picture width. The maximum picture height and maximum picture width are not changed by ARC. This allows the NoOutputOfPriorPicsFlag to be set appropriately to prevent DPB overflow due to spatial resolution changes, even when ARC is used to match the resolution when changing layers. Therefore, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating in the encoder when checking the encoded bitstream for standards conformance. This results in improved encoder and decoder performance. Furthermore, coding efficiency can be improved, thereby reducing the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0007] Optionally, in any of the above-mentioned aspects, another implementation of the aspect further includes a step of setting a value of NoOutputOfPriorPicsFlag by the processor if the value of the maximum picture height in luma samples (PicHeightMaxInSamplesY) of the current AU is different from the value of PicHeightMaxInSamplesY of the preceding AU in decoding order.

[0008] Optionally, in any of the above-described aspects, in another implementation of the aspect, the DPB is emptied before decoding the current picture.

[0009] Optionally, in any of the above-mentioned aspects, in another implementation of the aspect, the DPB is emptied after parsing the slice header of the first slice of the current picture.

[0010] Optionally, in any of the above-mentioned aspects, another implementation of the aspect further comprises decrementing the DPB fullness variable for each picture removed when emptying the DPB.

[0011] Optionally, in any of the aforementioned aspects, in another implementation of the aspect, the processor further includes constructing a reference picture list and performing reference picture list marking for the current AU before setting NoOutputOfPriorPicsFlag.

[0012] Optionally, in any of the above-described aspects, in another implementation of the aspect, the DPB is emptied if the preceding picture is marked as unused for reference.

[0013] In one embodiment, the present disclosure includes a method performed by an encoder, the method including: encoding, by a processor of the encoder, a plurality of pictures into a bitstream; checking, by an HRD operating in the processor, the bitstream for conformance by: setting, by the processor, a value of NoOutputOfPriorPicsFlag if the value of PicWidthMaxInSamplesY of the current AU is different from the value of PicWidthMaxInSamplesY of the preceding AU in decoding order; emptying the DPB without selecting a picture accommodated for output based on the value of NoOutputOfPriorPicsFlag; decoding, by the processor, the current picture; and storing, by a memory coupled to the processor, the bitstream for communication to a decoder.

[0014] A video coding system can code a video sequence into multiple layers. Such layers can be extracted from the encoded bitstream and sent to a decoder, allowing the decoder to display the video sequence using different characteristics as desired. For example, pictures can be sent at a higher resolution / larger size when network conditions are optimal and at a lower resolution / smaller size when network conditions deteriorate. One issue with this implementation is that the DPB in the decoder may overflow during a layer change, which can cause a degraded user experience. To address this issue, the NoOutputOfPriorPicsFlag can be used. The NoOutputOfPriorPicsFlag can be set to empty the DPB to make room for the new picture. This can occur even if the previous picture in the DPB is designated for output. In some video coding systems, the NoOutputOfPriorPicsFlag is set based on a detected picture size change due to a change in width or height between consecutive pictures. ARC is a mechanism to support resolution changes. ARC can dynamically change the resolution of a picture in the DPB to match the resolution of a subsequent picture to allow resolution changes to occur on pictures other than IRAP pictures. The use of ARC can prevent the NoOutputOfPriorPicsFlag from working properly. Specifically, ARC may change the spatial resolution of a preceding picture to be the same as the current picture, which causes the picture resize check to not work properly. Therefore, ARC can result in a DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

[0015] This embodiment provides a mechanism for enabling NoOutputOfPriorPicsFlag when ARC is used. For example, instead of checking the picture height and width, the decoder can check for changes in the maximum picture height and / or maximum picture width. The maximum picture height and maximum picture width are not changed by ARC. This allows the NoOutputOfPriorPicsFlag to be set appropriately to prevent DPB overflow due to spatial resolution changes, even when ARC is used to match the resolution when changing layers. Therefore, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating in the encoder when checking the encoded bitstream for standards conformance. This results in improved encoder and decoder performance. Furthermore, coding efficiency can be improved, thereby reducing the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0016] Optionally, in any of the above-mentioned aspects, another implementation of the aspect further includes a step of setting a value of NoOutputOfPriorPicsFlag by an HRD operating in a processor if the value of PicHeightMaxInSamplesY of the current AU is different from the value of PicHeightMaxInSamplesY of the preceding AU in decoding order.

[0017] Optionally, in any of the above-described aspects, in another implementation of the aspect, the DPB is emptied before decoding the current picture.

[0018] Optionally, in any of the above-mentioned aspects, in another implementation of the aspect, the DPB is emptied after parsing the slice header of the first slice of the current picture.

[0019] Optionally, in any of the above-mentioned aspects, another implementation of the aspect further includes a step of decrementing, by the HRD operating in the processor, the DPB fullness variable for each picture removed when emptying the DPB.

[0020] Optionally, in any of the aforementioned aspects, another implementation of the aspect further includes, by the HRD operating in the processor, constructing a reference picture list and performing reference picture list marking.

[0021] Optionally, in any of the above-described aspects, in another implementation of the aspect, the DPB is emptied if the preceding picture is marked as unused for reference.

[0022] In one embodiment, the present disclosure comprises a video coding apparatus 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 the aforementioned aspect.

[0023] In one embodiment, the present disclosure includes 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, cause the video coding device to perform the method of any of the aforementioned aspects.

[0024] In one embodiment, the present disclosure includes a decoder, the decoder including: receiving means for receiving a bitstream including a plurality of pictures; setting means for setting a value of NoOutputOfPriorPicsFlag if the value of PicWidthMaxInSamplesY of the current AU is different from the value of PicWidthMaxInSamplesY of the preceding AU in decoding order; emptying means for emptying the DPB without outputting any pictures contained therein based on the value of NoOutputOfPriorPicsFlag; decoding means for decoding the current picture; storing means for storing the current picture in the DPB; and output means for outputting the current picture from the DPB for display as part of a decoded video sequence.

[0025] A video coding system can code a video sequence into multiple layers. Such layers can be extracted from the encoded bitstream and sent to a decoder, allowing the decoder to display the video sequence using different characteristics as desired. For example, pictures can be sent at a higher resolution / larger size when network conditions are optimal and at a lower resolution / smaller size when network conditions deteriorate. One issue with this implementation is that the DPB in the decoder may overflow during a layer change, which can cause a degraded user experience. To address this issue, the NoOutputOfPriorPicsFlag can be used. The NoOutputOfPriorPicsFlag can be set to empty the DPB to make room for the new picture. This can occur even if the previous picture in the DPB is designated for output. In some video coding systems, the NoOutputOfPriorPicsFlag is set based on a detected picture size change due to a change in width or height between consecutive pictures. ARC is a mechanism to support resolution changes. ARC can dynamically change the resolution of a picture in the DPB to match the resolution of a subsequent picture to allow resolution changes to occur on pictures other than IRAP pictures. The use of ARC can prevent the NoOutputOfPriorPicsFlag from working properly. Specifically, ARC may change the spatial resolution of a preceding picture to be the same as the current picture, which causes the picture resize check to not work properly. Therefore, ARC can result in a DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

[0026] This embodiment provides a mechanism for enabling NoOutputOfPriorPicsFlag when ARC is used. For example, instead of checking the picture height and width, the decoder can check for changes in the maximum picture height and / or maximum picture width. The maximum picture height and maximum picture width are not changed by ARC. This allows the NoOutputOfPriorPicsFlag to be set appropriately to prevent DPB overflow due to spatial resolution changes, even when ARC is used to match the resolution when changing layers. Therefore, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating in the encoder when checking the encoded bitstream for standards conformance. This results in improved encoder and decoder performance. Furthermore, coding efficiency can be improved, thereby reducing the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

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

[0028] In one embodiment, the present disclosure includes an encoder, the encoder including: encoding means for encoding a plurality of pictures into a bitstream; HRD means for checking the bitstream for conformance by setting a value of NoOutputOfPriorPicsFlag if the value of PicWidthMaxInSamplesY of the current AU and the value of PicWidthMaxInSamplesY of the previous AU are different in decoding order, emptying the DPB without selecting a picture accommodated for output based on the value of NoOutputOfPriorPicsFlag, decoding the current picture, and storing the current picture in the DPB; and storage means for storing the bitstream for communication to a decoder.

[0029] A video coding system can code a video sequence into multiple layers. Such layers can be extracted from the encoded bitstream and sent to a decoder, allowing the decoder to display the video sequence using different characteristics as desired. For example, pictures can be sent at a higher resolution / larger size when network conditions are optimal and at a lower resolution / smaller size when network conditions deteriorate. One issue with this implementation is that the DPB in the decoder may overflow during a layer change, which can cause a degraded user experience. To address this issue, the NoOutputOfPriorPicsFlag can be used. The NoOutputOfPriorPicsFlag can be set to empty the DPB to make room for the new picture. This can occur even if the previous picture in the DPB is designated for output. In some video coding systems, the NoOutputOfPriorPicsFlag is set based on a detected picture size change due to a change in width or height between consecutive pictures. ARC is a mechanism to support resolution changes. ARC can dynamically change the resolution of a picture in the DPB to match the resolution of a subsequent picture to allow resolution changes to occur on pictures other than IRAP pictures. The use of ARC can prevent the NoOutputOfPriorPicsFlag from working properly. Specifically, ARC may change the spatial resolution of a preceding picture to be the same as the current picture, which causes the picture resize check to not work properly. Therefore, ARC can result in a DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

[0030] This embodiment provides a mechanism for enabling NoOutputOfPriorPicsFlag when ARC is used. For example, instead of checking the picture height and width, the decoder can check for changes in the maximum picture height and / or maximum picture width. The maximum picture height and maximum picture width are not changed by ARC. This allows the NoOutputOfPriorPicsFlag to be set appropriately to prevent DPB overflow due to spatial resolution changes, even when ARC is used to match the resolution when changing layers. Therefore, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating in the encoder when checking the encoded bitstream for standards conformance. This results in improved encoder and decoder performance. Furthermore, coding efficiency can be improved, thereby reducing the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

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

[0032] In one embodiment, the present disclosure includes a method performed by a decoder, the method including the steps of: receiving, by a receiver of the decoder, a bitstream including a plurality of pictures; emptying a DPB without outputting the contained picture if the value of PicWidthMaxInSamplesY of the current AU is different from the value of PicWidthMaxInSamplesY of the preceding AU in decoding order; decoding, by a processor, the current picture; and storing the current picture in the DPB.

[0033] A video coding system can code a video sequence into multiple layers. Such layers can be extracted from the encoded bitstream and sent to a decoder, allowing the decoder to display the video sequence using different characteristics as desired. For example, pictures can be sent at a higher resolution / larger size when network conditions are optimal and at a lower resolution / smaller size when network conditions deteriorate. One issue with this implementation is that the DPB in the decoder may overflow during a layer change, which can cause a degraded user experience. To address this issue, the NoOutputOfPriorPicsFlag can be used. The NoOutputOfPriorPicsFlag can be set to empty the DPB to make room for the new picture. This can occur even if the previous picture in the DPB is designated for output. In some video coding systems, the NoOutputOfPriorPicsFlag is set based on a detected picture size change due to a change in width or height between consecutive pictures. ARC is a mechanism to support resolution changes. ARC can dynamically change the resolution of a picture in the DPB to match the resolution of a subsequent picture to allow resolution changes to occur on pictures other than IRAP pictures. The use of ARC can prevent the NoOutputOfPriorPicsFlag from working properly. Specifically, ARC may change the spatial resolution of a preceding picture to be the same as the current picture, which causes the picture resize check to not work properly. Therefore, ARC can result in a DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

[0034] This embodiment provides a mechanism for enabling NoOutputOfPriorPicsFlag when ARC is used. For example, instead of checking the picture height and width, the decoder can check for changes in the maximum picture height and / or maximum picture width. The maximum picture height and maximum picture width are not changed by ARC. This allows the NoOutputOfPriorPicsFlag to be set appropriately to prevent DPB overflow due to spatial resolution changes, even when ARC is used to match the resolution when changing layers. Therefore, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating in the encoder when checking the encoded bitstream for standards conformance. This results in improved encoder and decoder performance. Furthermore, coding efficiency can be improved, thereby reducing the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0035] Optionally, in any of the above-mentioned aspects, another implementation of the aspect further includes a step of emptying the DPB without outputting the contained picture if the value of PicHeightMaxInSamplesY of the current AU is different from the value of PicHeightMaxInSamplesY of the preceding AU in decoding order.

[0036] Optionally, in any of the above-described aspects, in another implementation of the aspect, the DPB is emptied before decoding the current picture.

[0037] Optionally, in any of the above-mentioned aspects, in another implementation of the aspect, the DPB is emptied after parsing the slice header of the first slice of the current picture.

[0038] Optionally, in any of the above-mentioned aspects, another implementation of the aspect further comprises decrementing the DPB fullness variable for each picture removed when emptying the DPB.

[0039] Optionally, in any of the above-mentioned aspects, in another implementation of the aspect, the processor further includes a step of building a reference picture list for the current AU and performing reference picture list marking before emptying the DPB.

[0040] Optionally, in any of the above-described aspects, in another implementation of the aspect, the DPB is emptied if the preceding picture is marked as unused for reference.

[0041] In one embodiment, the present disclosure includes a method performed by an encoder, the method including the steps of: encoding, by a processor of the encoder, a plurality of pictures into a bitstream; checking, by an HRD operating in the processor, the bitstream for conformance by emptying a DPB without outputting any pictures contained therein if the value of PicWidthMaxInSamplesY of the current AU is different from the value of PicWidthMaxInSamplesY of the preceding AU in decoding order; decoding, by the processor, the current picture; and storing, by a memory coupled to the processor, the bitstream for communication to a decoder.

[0042] A video coding system can code a video sequence into multiple layers. Such layers can be extracted from the encoded bitstream and sent to a decoder, allowing the decoder to display the video sequence using different characteristics as desired. For example, pictures can be sent at a higher resolution / larger size when network conditions are optimal and at a lower resolution / smaller size when network conditions deteriorate. One issue with this implementation is that the DPB in the decoder may overflow during a layer change, which can cause a degraded user experience. To address this issue, the NoOutputOfPriorPicsFlag can be used. The NoOutputOfPriorPicsFlag can be set to empty the DPB to make room for the new picture. This can occur even if the previous picture in the DPB is designated for output. In some video coding systems, the NoOutputOfPriorPicsFlag is set based on a detected picture size change due to a change in width or height between consecutive pictures. ARC is a mechanism to support resolution changes. ARC can dynamically change the resolution of a picture in the DPB to match the resolution of a subsequent picture to allow resolution changes to occur on pictures other than IRAP pictures. The use of ARC can prevent the NoOutputOfPriorPicsFlag from working properly. Specifically, ARC may change the spatial resolution of a preceding picture to be the same as the current picture, which causes the picture resize check to not work properly. Therefore, ARC can result in a DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

[0043] This embodiment provides a mechanism for enabling NoOutputOfPriorPicsFlag when ARC is used. For example, instead of checking the picture height and width, the decoder can check for changes in the maximum picture height and / or maximum picture width. The maximum picture height and maximum picture width are not changed by ARC. This allows the NoOutputOfPriorPicsFlag to be set appropriately to prevent DPB overflow due to spatial resolution changes, even when ARC is used to match the resolution when changing layers. Therefore, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating in the encoder when checking the encoded bitstream for standards conformance. This results in improved encoder and decoder performance. Furthermore, coding efficiency can be improved, thereby reducing the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0044] Optionally, in any of the above-mentioned aspects, another implementation of the aspect further includes a step of emptying the DPB without outputting the contained picture if the value of PicHeightMaxInSamplesY of the current AU is different from the value of PicHeightMaxInSamplesY of the preceding AU in decoding order.

[0045] Optionally, in any of the above-described aspects, in another implementation of the aspect, the DPB is emptied before decoding the current picture.

[0046] Optionally, in any of the above-mentioned aspects, in another implementation of the aspect, the DPB is emptied after parsing the slice header of the first slice of the current picture.

[0047] Optionally, in any of the above-mentioned aspects, another implementation of the aspect further comprises decrementing the DPB fullness variable for each picture removed when emptying the DPB.

[0048] Optionally, in any of the above-mentioned aspects, in another implementation of the aspect, the processor further includes a step of building a reference picture list for the current AU and performing reference picture list marking before emptying the DPB.

[0049] Optionally, in any of the above-described aspects, in another implementation of the aspect, the DPB is emptied if the preceding picture is marked as unused for reference.

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

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

[0052] For a more complete understanding of this 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. [Brief explanation of the drawings]

[0053] [Figure 1] 1 is a flowchart of an exemplary method for coding a video signal. [Figure 2] 1 is a schematic diagram of an example coding and decoding (codec) system for video coding. [Figure 3] FIG. 1 is a schematic diagram illustrating an exemplary video encoder. [Figure 4] FIG. 1 is a schematic diagram illustrating an exemplary video decoder. [Figure 5] 1 is a schematic diagram illustrating an exemplary hypothetical reference decoder (HRD). [Figure 6] FIG. 1 is a schematic diagram illustrating an exemplary multi-layer video sequence. [Figure 7] FIG. 2 is a schematic diagram illustrating an exemplary bitstream. [Figure 8] 1 is a schematic diagram of an exemplary video coding device; [Figure 9] 1 is a flowchart of an example method for encoding a video sequence into a bitstream to support the use of a no output of previous picture flag (NoOutputOfPriorPicsFlag) in conjunction with adaptive resolution scaling (ARC). [Figure 10] 10 is a flowchart of an exemplary method for decoding a video sequence from a bitstream while using NoOutputOfPriorPicsFlag with ARC. [Figure 11] FIG. 1 is a schematic diagram of an example system for coding a video sequence into a bitstream while using NoOutputOfPriorPicsFlag with ARC. DETAILED DESCRIPTION OF THE INVENTION

[0054] Initially, exemplary implementations of one or more embodiments are provided below, but 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 should in no way be limited to the exemplary implementations, drawings, and techniques set forth below, including the exemplary designs and implementations shown or described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.

[0055] The following terms are defined as follows, unless used herein in a contrary context. Specifically, the following definitions are intended to further clarify the present disclosure. However, terms may be described differently in different contexts. Therefore, the following definitions should be considered supplementary and should not be considered limiting of other definitions given to such terms herein.

[0056] A bitstream is a series of bits containing compressed video data for transmission between an encoder and a decoder. An encoder is a device configured to use an encoding process to compress video data into a bitstream. A decoder is a device configured to use a decoding process to recover video data from a bitstream for display. A picture is an array of luma samples and / or chroma samples that generate a frame or a field thereof. A luma sample is the luminance value of a point / pixel within a picture. A picture width is the horizontal distance between the left boundary of a picture and the right boundary of the picture, measured in luma samples. A picture height is the vertical distance between the top boundary of a picture and the bottom boundary of the picture, measured in luma samples. A slice is an integer number of complete tiles contained exclusively in a single Network Abstraction Layer (NAL) unit, or an integer number of consecutive complete coding tree unit (CTU) rows (e.g., within a tile) of a picture. For clarity, the picture being encoded or decoded may be referred to as the current picture. A coded picture is a coded representation of a picture that includes video coding layer (VCL) NAL units with a particular value of NAL unit header layer identifier (nuh_layer_id) in access units (AUs) and includes all coding tree units (CTUs) of the picture. Parsing is the process of parsing a data stream to obtain logical data components. A decoded picture is a picture produced by applying the decoding process to a coded picture.

[0057] An AU is a set of coded pictures contained in different layers and associated with the same time for output from the decoded picture buffer (DPB). The current AU is an AU that corresponds to a particular output time in the decoding process and / or HRD conformance check process. A previous AU is an AU that occurs before (e.g., immediately before) the current AU in decoding order. The decoding order is the order in which syntax elements are processed by the decoding process. A NAL unit is a syntax structure that contains data in the form of a raw byte sequence payload (RBSP), an indication of the type of data, and is optionally interspersed with emulation prevention bytes. A VCL NAL unit is 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 of video data, performing conformance checks, or other operations. A layer is a set of VCL NAL units that share specified characteristics (eg, a common resolution, frame rate, picture size, etc.), as indicated by a layer ID and associated non-VCL NAL units.

[0058] The DPB is a buffer that holds decoded pictures for reference, output reordering, or output delay. The DPB fullness variable is a data element that indicates the number of pictures stored in the DPB. Decrement is a decrease in value. The reference picture list is a list of reference pictures used for inter-prediction. Reference picture list marking is the process of marking decoded pictures in the DPB with reference statuses, including unused for reference, used for short-term reference, and used for long-term reference, based on the constructed reference picture list of the current slice. Unused for reference is a reference status that indicates that the decoded picture is not being used as a reference picture for further decoded pictures. The no output of previous pictures flag (NoOutputOfPriorPicsFlag) is a derived variable that specifies when to empty the DPB without outputting pictures contained in the DPB. The maximum picture width in luma samples (PicWidthMaxInSamplesY) is a derived variable that indicates the maximum width in luma sample units of each decoded picture in the corresponding sequence and / or layer. The maximum picture height in luma samples (PicHeightMaxInSamplesY) is a derived variable that indicates the maximum height in luma sample units of each decoded picture in the corresponding sequence and / or layer.

[0059] A hypothetical reference decoder (HRD) is a decoder model that runs on an encoder and checks the variability of the bitstream produced by the encoding process to verify compliance with specified constraints. A bitstream conformance test determines whether the encoded bitstream conforms to a standard, such as Versatile Video Coding (VVC). A picture parameter set (PPS) is a syntax structure containing syntax elements that apply to the entire coded picture, as determined by the syntax elements found in each picture header. A picture header is a syntax structure containing syntax elements that apply to all slices of the coded picture. A slice header is a portion of a coded slice that contains data elements for an entire tile or CTU rows within the tile represented by the slice. A coded video sequence is a set of one or more coded pictures. A decoded video sequence is a set of one or more decoded pictures.

[0060] 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 Start (CVSS), Joint Video Experts Team (JVET), Hypothetical Reference Decoder (HRD), 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 Versatile Video Coding (VVC).

[0061] Many video compression techniques can be used to reduce the size of video files while minimizing 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. In 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 also be referred to as tree blocks, coding 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 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 that represents an image block. Residual data represents pixel differences between the original image block and the prediction block. Thus, inter-coded blocks are encoded according to a motion vector that points to a block of reference samples forming the prediction block and residual data that indicates the difference between the coded block and the prediction block. Intra-coded blocks are encoded according to an intra-coding mode and residual data. For further compression, the residual data may be transformed from the pixel domain to a transform domain, resulting in residual transform coefficients that may be quantized. The quantized transform coefficients may initially be arranged in a two-dimensional array. The quantized transform coefficients may be scanned to generate a one-dimensional vector of transform coefficients.To achieve further compression, entropy coding may be applied. Such video compression techniques are described in more detail below.

[0062] To ensure that the encoded video can be accurately decoded, the video is encoded and decoded according to a corresponding video coding standard. Video coding standards include: Advanced Video Coding (AVC), also known as International Telecommunication Union (ITU) Standardization Sector (ITU-T) H.261, International Organization for Standardization / International Electrotechnical Commission (ISO / IEC) Moving Picture Experts Group (MPEG)-1 Part 2, 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), 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 Joint Video Experts Team (JVET) of ITU-T and ISO / IEC has initiated the development of a video coding standard called Versatile Video Coding (VVC). VVC is contained in working drafts (WDs) including JVET-O2001-v14.

[0063] A video coding system can code a video sequence into multiple layers. Such layers can be extracted from the encoded bitstream and sent to a decoder, allowing the decoder to display the video sequence using different characteristics as desired. For example, pictures can be sent at a higher resolution / larger size when network conditions are optimal and at a lower resolution / smaller size when network conditions deteriorate. One issue with this implementation is that the decoded picture buffer (DPB) in the decoder may overflow during a layer change, which can cause a degraded user experience. To address this issue, the no output flag for the previous picture (NoOutputOfPriorPicsFlag) can be used. NoOutputOfPriorPicsFlag can be set to empty the DPB to make space for the new picture. This can occur even if the previous picture in the DPB is designated for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a detected picture size change due to a change in the picture's width or height. Adaptive Resolution Change (ARC) is a mechanism for supporting resolution changes. ARC dynamically changes the resolution of pictures in the DPB to match subsequent pictures, allowing resolution changes to occur on pictures other than Intra Random Access Point (IRAP) pictures. The use of ARC can prevent the NoOutputOfPriorPicsFlag from working properly. Specifically, ARC may change the spatial resolution of a preceding picture to be the same as the current picture, which causes picture resize checks to not work properly. Therefore, ARC can result in DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

[0064] This specification discloses a mechanism for enabling NoOutputOfPriorPicsFlag when ARC is used. For example, instead of checking picture height and width, a decoder can check for changes in maximum picture height and width. The maximum picture height and width are not changed by ARC. This allows NoOutputOfPriorPicsFlag to be set appropriately to prevent DPB overflow due to spatial resolution changes, even when ARC is used to match the resolution when changing layers. Therefore, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating in an encoder when checking an encoded bitstream for standards conformance. This results in improved encoder and decoder performance. Furthermore, coding efficiency can be improved, thereby reducing the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0065] 1 is a flowchart of an exemplary operational method 100 for coding a video signal. Specifically, a video signal is encoded by an encoder. The encoding process compresses the video signal using various mechanisms to reduce the size of the video file. The smaller file size allows the compressed video file to be transmitted to a user, reducing the associated bandwidth overhead. A decoder then decodes the compressed video file to recover the original video signal for display to the end user. To enable the decoder to consistently recover the video signal, the decoding process typically mirrors the encoding process.

[0066] In 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 an audio component and a video component. The video component includes a series of image frames that, when viewed in succession, create the visual impression of movement. The frames include pixels, which are represented by light, referred to herein as luma components (or luma samples), and color, referred to herein as chroma components (or color samples). In some examples, the frames may also include depth values ​​to support three-dimensional viewing.

[0067] In step 103, the video is partitioned into blocks. Partitioning involves subdividing 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 can first be subdivided into coding tree units (CTUs), which are blocks of a predetermined size (e.g., 64 pixels by 64 pixels). CTUs contain both luma and chroma samples. A coding tree is used to divide the CTUs into blocks, which can then be recursively subdivided until a configuration that supports further encoding is achieved. For example, the luma component of a frame may be subdivided until each block contains relatively uniform illumination values. Furthermore, the chroma component of a frame may be subdivided until each block contains relatively uniform color values. Thus, the partitioning mechanism varies depending on the content of the video frame.

[0068] In step 105, the image blocks partitioned in step 103 are compressed using various compression mechanisms. For example, inter-prediction and / or intra-prediction may be used. Inter-prediction exploits the fact that objects in a typical scene tend to appear in consecutive frames. Therefore, a block representing an object in a reference frame need not be repeatedly described in adjacent frames. Specifically, an object such as a desk may remain in a constant position across multiple frames. Therefore, the desk may be described once, and adjacent frames may reference the reference frame. A pattern matching mechanism may be used to match objects across multiple frames. Furthermore, an object may be depicted moving 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 can be described using motion vectors. A motion vector is a two-dimensional vector that provides an offset from the coordinates of an object in a frame to the coordinates of that object in a reference frame. Thus, inter-prediction may encode image blocks in a current frame as a set of motion vectors indicating their offsets from corresponding blocks in a reference frame.

[0069] Intra prediction encodes blocks within a given frame. It takes advantage of the fact that luma and chroma components tend to cluster together within a frame. For example, green patches in a section of a tree tend to be located near similar green patches. Intra prediction uses several directional prediction modes (e.g., 33 in HEVC), planar mode, and direct current (DC) mode. Directional mode indicates that the current block is similar to samples from neighboring blocks in the corresponding direction. Planar mode indicates that a series of blocks along a row / column (e.g., a plane) can be interpolated based on neighboring blocks at the edge of the row. Planar mode effectively indicates a smooth transition of light / color across a row / column by using a relatively constant slope of the changing values. DC mode is used for boundary smoothing and indicates that the block is similar to the average value associated with samples from all neighboring blocks associated with the angular direction of the directional prediction mode. Therefore, intra-predicted blocks can represent image blocks as various related prediction mode values ​​instead of actual values. Furthermore, inter-predicted blocks can represent image blocks as motion vector values ​​instead of actual values. In either case, the predicted block may not exactly represent the image block. The difference is stored in a residual block. To further compress the file, a transform can be applied to the residual block.

[0070] Various filtering techniques may be applied in step 107. In HEVC, filters are applied according to an in-loop filtering scheme. The block-based prediction described above can result in the creation of blocky images at the decoder. Furthermore, block-based prediction schemes can encode blocks and reconstruct the encoded blocks for later use as reference blocks. In-loop filtering schemes iteratively apply noise suppression filters, deblocking filters, adaptive loop filters, and sample adaptive offset (SAO) filters to blocks / frames. These filters reduce such blocking artifacts so that the encoded file can be accurately reconstructed. Furthermore, these filters reduce artifacts in the reconstructed reference blocks, reducing the likelihood of further artifacts occurring in subsequent blocks encoded based on the reconstructed reference blocks.

[0071] Once the video signal has been segmented, compressed, and filtered, the resulting data is encoded into a bitstream in step 109. This bitstream includes the data described above, as well as any signaling data desired to support proper video signal recovery at a decoder. For example, such data may include segmentation data, prediction data, residual blocks, and various flags that provide coding instructions to the decoder. The bitstream may be stored in memory for transmission to the decoder upon request. The bitstream may also be broadcast and / or multicast to multiple decoders. Generating the bitstream is an iterative process. Thus, steps 101, 103, 105, 107, and 109 may occur sequentially and / or simultaneously across multiple frames and blocks. The order shown in FIG. 1 is presented for clarity and simplicity of explanation and is not intended to limit the video coding process to any particular order.

[0072] The decoder receives the bitstream and begins the decoding process in step 111. Specifically, the decoder uses an entropy decoding scheme to convert the bitstream into corresponding syntax data and video data. In step 111, the decoder uses the syntax data from the bitstream to determine the frame partition. The partition must match the block partitioning results from step 103. This section describes the entropy encoding / decoding used in step 111. The encoder makes numerous choices during the compression process, such as selecting a block partitioning scheme from several options based on the spatial arrangement of values ​​in the input image. To signal the exact choice, multiple bins can be used. A bin, as used here, is a binary value treated as a variable (e.g., a bit value that can change depending on the situation). Entropy coding allows the encoder to discard options that are clearly invalid in a particular situation, leaving a set of acceptable options. A codeword is then assigned to each acceptable option. The length of the codeword is based on the number of acceptable options (e.g., one bin for two options, two bins for three or four options, etc.). The encoder then encodes a codeword for the selected option. This scheme reduces the size of the codeword, since it is desirable if the codeword uniquely indicates a choice from a small subset of allowable options, rather than a choice from a large set of all possible options. The decoder then decodes the selection by determining the set of allowable options in the same way as the encoder. By determining the set of allowable options, the decoder can read the codeword and determine the selection made by the encoder.

[0073] In step 113, the decoder performs block decoding. Specifically, the decoder generates a residual block using an inverse transform. Then, the decoder uses the residual block and a corresponding prediction block to reconstruct an image block based on the partition. The prediction block may include both an intra-prediction block and an inter-prediction block generated by the encoder in step 105. The reconstructed image block is then placed in a frame of the reconstructed video signal based on the partition data determined in step 111. The syntax of step 113 may also be signaled in the bitstream using the entropy coding described above.

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

[0075] 2 is a schematic diagram of an exemplary coding and decoding (codec) system 200 for video coding. Specifically, codec system 200 provides functionality supporting the implementation of operational method 100. Codec system 200 is generalized to illustrate components used in both encoders and decoders. Codec system 200 receives and segments a video signal as described with respect to steps 101 and 103 of operational method 100, resulting in a segmented video signal 201. Codec system 200 then compresses segmented video signal 201 into a coded bitstream when functioning as an encoder as described with respect to steps 105, 107, and 109 of method 100. When functioning as a decoder, codec system 200 generates an output video signal from the bitstream as described with respect to steps 111, 113, 115, and 117 of 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, black lines indicate the movement of data to be encoded / decoded, and dashed lines indicate the movement of control data that controls the operation of other components. Any of the components of codec system 200 may reside within 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 now described.

[0076] The partitioned video signal 201 is a captured video sequence partitioned into blocks of pixels by a coding tree. The coding tree uses various partitioning modes to subdivide the blocks of pixels into smaller blocks of pixels. These blocks can then be further subdivided into smaller blocks. Blocks are sometimes referred to as nodes on the coding tree. Large parent nodes are divided into smaller child nodes. The number of times a node is subdivided is referred to as the depth of the node / coding tree. The partitioned blocks may be included in coding units (CUs). For example, a CU may be a subpart of a CTU that includes a luma block, one or more red-difference chroma (Cr) blocks, and one or more blue-difference chroma (Cb) blocks, along with the corresponding CU syntax instructions. Partitioning modes include binary tree (BT), triple tree (TT), and quad tree (QT), which are used to partition a node into two, three, or four child nodes, each with a different shape, depending on the partitioning mode used. The segmented video signal 201 is forwarded to a general 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.

[0077] The general coder control component 211 is configured to make decisions related to coding the images of a video sequence into a bitstream according to application constraints. For example, the general coder control component 211 manages the optimization of bitrate / bitstream size versus reconstruction quality. Such decisions may be made based on the availability of available storage space / bandwidth and the resolution requirements of the images. The general coder control component 211 also manages buffer usage in relation to the transmission rate to mitigate buffer underrun and overrun issues. To manage these issues, the general coder control component 211 manages segmentation, prediction, and filtering by other components. For example, the general coder control component 211 can dynamically increase compression complexity to increase resolution and bandwidth usage, or decrease compression complexity to decrease resolution and bandwidth usage. Thus, the general coder control component 211 controls other components of the codec system 200 to balance the reconstruction quality and bitrate of the video signal. The general coder control component 211 generates control data that controls the operation of the other components. Control data is also forwarded to the header formatting and CABAC component 231 and encoded in the bitstream to signal parameters for decoding at the decoder.

[0078] The partitioned video signal 201 is also transmitted 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 steps, for example, to select an appropriate coding mode for each block of video data.

[0079] 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 that estimate the motion of video blocks. A motion vector may indicate, for example, the movement of a coded object relative to a predictive block. A predictive block is a block known to closely match a coded block 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 measures. HEVC uses several coded objects, including CTUs, coding tree blocks (CTBs), and CUs. For example, a CTU may be divided into CTBs, which may then be divided into CBs for inclusion in CUs. A CU may be encoded as a prediction unit (PU), which contains prediction data, and / or as a transform unit (TU), which contains transformed residual data of the CU. The motion estimation component 221 generates motion vectors, prediction units, and TUs by using rate-distortion analysis as part of a rate-distortion optimization process. For example, motion estimation component 221 can determine multiple reference blocks, multiple motion vectors, etc. for the current block / frame and select the reference block, motion vector, etc. that has the best rate-distortion performance that balances 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).

[0080] In some examples, the codec system 200 can calculate values ​​for sub-integer pixel positions of a reference picture stored in the decoded picture buffer component 223. For example, the video codec system 200 can interpolate values ​​for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of a reference picture. Thus, the motion estimation component 221 can perform motion searches based on whole-pixel and fractional pixel positions and output fractional pixel motion vectors. The motion estimation component 221 calculates motion vectors for prediction units of video blocks in inter-coded slices by comparing the positions of the prediction units with the positions of prediction blocks in 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 outputs the motion to the motion compensation component 219.

[0081] The motion compensation performed by the motion compensation component 219 can obtain or generate 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 of the prediction unit of the current video block, the motion compensation component 219 can find the prediction block pointed to by the motion vector. 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. Typically, 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 transform scaling and quantization component 213.

[0082] The segmented video signal 201 is also sent to an intra-picture estimation component 215 and an intra-picture prediction component 217. Like the motion estimation component 221 and 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 the current block based on blocks within the current frame, instead of the inter-prediction performed from frame to frame by the motion estimation component 221 and the motion compensation component 219, as described above. Specifically, the intra-picture estimation component 215 determines the 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 multiple tested intra-prediction modes. The selected intra-prediction mode is then forwarded to the header formatting and CABAC component 231 for encoding.

[0083] For example, the intra picture estimation component 215 may use rate-distortion analysis to calculate rate-distortion values ​​for various tested intra prediction modes and select the intra prediction mode with the best rate-distortion characteristics from among the tested modes. Rate-distortion analysis typically determines the amount of distortion (or error) between an encoded block and the original unencoded block that was encoded to generate the encoded block, as well as the bitrate (e.g., number of bits) used to generate the encoded block. The intra picture estimation component 215 may calculate a ratio between the distortion and rate of the various encoded blocks to 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 block of the depth map using a rate-distortion optimization (RDO)-based depth modeling mode (DMM).

[0084] The intra-picture prediction component 217 can generate a residual block from the prediction block based on the selected intra-prediction mode determined by the intra-picture estimation component 215 when implemented in an encoder, or read the residual block from the bitstream when implemented in a decoder. The residual block contains the difference in values ​​between the prediction block and the original block, expressed 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 can operate on both the luma and chroma components.

[0085] 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 containing 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 the 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 applies a scale factor to the residual information, which quantizes different frequency information with different granularities, 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 bitrate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be changed by adjusting a quantization parameter. In some examples, the transform scaling and quantization component 213 can then perform a scan of the matrix containing the quantized transform coefficients, which are forwarded to the header formatting and CABAC component 231 for encoding in the bitstream.

[0086] 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 inverse scaling, transformation, and / or quantization to reconstruct a residual block in the pixel domain for later use as a reference block, which may become a prediction block for another current block, for example. The motion estimation component 221 and / or motion compensation component 219 can compute a reference block by adding the residual block to a corresponding prediction block used in motion estimation for a later block / frame. To mitigate artifacts introduced during scaling, quantization, and transformation, a filter is applied to the reconstructed reference block. Otherwise, such artifacts may lead to inaccurate predictions (and further artifacts) when subsequent blocks are predicted.

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

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

[0089] 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 to a decoder. Specifically, 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, and residual data in the form of quantized transform coefficient data are all encoded in the bitstream. The final bitstream contains all the information a decoder needs to reconstruct the original segmented video signal 201. Such information may also include an intra-prediction mode index table (also called a codeword mapping table), definitions of the encoding contexts of various blocks, indications of the most likely intra-prediction modes, indications of segmentation information, and so on. 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 other entropy coding techniques. After entropy coding, the coded bitstream can be transmitted to another device (e.g., a video decoder) or stored for later transmission or retrieval.

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

[0091] 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. The partitioned video signal 301 is also forwarded to a motion compensation component 321 for inter-prediction based on reference blocks 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 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 transforming and quantizing 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 .

[0092] The transformed and quantized residual block and / or the corresponding prediction block are also forwarded from the transform and quantization component 313 to an inverse transform and quantization component 329 for reconstruction into a reference block used 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. In some examples, an in-loop filter in an in-loop filter component 325 is also applied to the residual block and / or the reconstructed reference block. 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 described with respect to the in-loop filter component 225. The filtered block is then stored in a 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.

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

[0094] 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 context for interpreting additional data encoded as codewords in the bitstream. The decoded information includes information desirable 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 the residual block. The inverse transform and quantization component 429 can be similar to the inverse transform and quantization component 329.

[0095] The reconstructed residual block and / or predictive block are forwarded to an intra-picture prediction component 417 for reconstruction into an image block based on an intra-prediction operation. The intra-picture prediction component 417 may be 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 corresponding inter-prediction 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, residual block, and / or predictive block, and such information is stored in the decoded picture buffer component 423. The reconstructed image block is transferred from the decoded picture buffer component 423 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 generates a prediction block using a motion vector from a reference block and applies a residual block to the result to reconstruct the image block. The resulting reconstructed block may also be transferred 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 can be reconstructed into frames using the segmentation information. Such frames may also be arranged in a sequence. This sequence is output to a display as a reconstructed output video signal.

[0096] 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 300. 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, once the bitstream is encoded, the bitstream may be continuously forwarded through the HRD 500. If a portion of the bitstream does not conform to an associated constraint, the HRD 500 may indicate such a failure to the encoder so that the encoder re-encodes the corresponding portion of the bitstream with another mechanism.

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

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

[0099] 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 can 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, the bitstream 551 does not conform to the standard and should be re-encoded.

[0100] The decoding process component 545 decodes the DU 553 to generate a decoded DU 555. The decoded DU 555 includes a decoded picture. The decoded DU 555 is transferred to a DPB 547. The DPB 547 may be substantially similar to the decoded picture buffer components 223, 323, and / or 423. Pictures marked for use as reference pictures 556 obtained from the decoded DU 555 to support inter-prediction 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 that typically reflect pictures encoded into the bitstream 551 by an encoder.

[0101] Picture 557 is forwarded to output cropping component 549, which is configured to apply an adaptive 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. In this way, the encoder can review output cropped picture 559 to ensure the encoding is good.

[0102] The HRD 500 is initialized based on HRD parameters in the bitstream 551. For example, the HRD 500 can read the HRD parameters from a VPS, SPS, and / or SEI message. The HRD 500 can then perform conformance testing operations on the bitstream 551 based on the information in such HRD parameters. As a specific example, the HRD 500 can determine one or more CPB delivery schedules from the HRD parameters. The delivery schedules specify the timing of delivery of video data to and 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 can use a DPB delivery schedule for the DPB 547 that is similar to the CPB delivery schedule.

[0103] Video may be coded into different layers and / or OLSs for use by decoders with varying levels of hardware capabilities and for varying network conditions. A CPB delivery schedule is selected to reflect these considerations. Accordingly, 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 that use large amounts of memory in the CPB 543 and short delays for the transfer of DUs 553 towards the DPB 547. Similarly, lower layer sub-bitstreams are designated for limited decoder hardware capabilities and / or poor network conditions. Thus, the lower layers may receive one or more CPB delivery schedules that use small amounts of memory in the CPB 543 and longer delays for the transfer of 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 correctly decoded under the conditions expected for the sub-bitstreams. Thus, the HRD parameters in the bitstream 551 may indicate the CPB delivery schedule and include sufficient data to enable the HRD 500 to determine the CPB delivery schedule and correlate the CPB delivery schedule to the corresponding OLS, layer, and / or sublayer.

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

[0105] In one example, the multi-layer video sequence 600 may use inter-layer prediction 621. Inter-layer prediction 621 is applied between pictures 611, 612, 613, 614 and pictures 615, 616, 617, 618 of different layers. In the example shown, 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. Layers, such as layer N 631 and / or layer N+1 632, are groups of pictures that are all associated with similar values ​​of characteristics 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 that share the same layer ID and associated non-VCL NAL units. A VCL NAL unit is 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 video data, performing conformance checks, or other operations.

[0106] In the illustrated example, layer N+1 632 is associated with a larger image size than layer N 631. Thus, in this example, the picture sizes (e.g., larger heights and widths, and therefore more samples) of pictures 611, 612, 613, and 614 in layer N+1 632 are larger than the picture sizes of pictures 615, 616, 617, and 618 in layer N 631. However, such pictures may be separated between layer N+1 632 and layer N 631 by other characteristics. 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 that 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 the identifier of the layer that contains the NAL unit (e.g., containing slices and / or parameters of a picture within a layer). Layers associated with lower quality / smaller image size / smaller bitstream size, such as layer N 631, are generally assigned a lower layer ID and are referred to as lower layers. Furthermore, layers associated with higher quality / larger image size / larger bitstream size, such as layer N+1 632, are generally assigned a higher layer ID and are referred to as upper layers.

[0107] Pictures 611-618 in different layers 631-632 are configured to be displayed in alternative manners. As a specific example, a decoder may decode and display picture 615 at the current display time if a smaller picture is desired, or the decoder may decode and display picture 611 at the current display time if a larger picture is desired. Thus, pictures 611-614 in upper 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.

[0108] 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 a solid arrow. For example, picture 613 may be coded using inter-prediction 623 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 using inter-prediction 623 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 performing inter prediction 623, a picture may be called a reference picture when it is used as a reference for another picture in the same layer. 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.

[0109] 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 for coding samples of a current picture by referencing indicated samples in reference pictures, where the current picture and the reference picture 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 632. 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 the 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 so 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. If multiple layers (e.g., three 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.

[0110] A video encoder can 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. Thereafter, pictures 616-618 may 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. Thereafter, pictures 612-614 may be coded according to inter-prediction 623 by using picture 611 as a reference picture. Thus, reference pictures can serve as both single-layer and inter-layer reference pictures for different coding mechanisms. By coding pictures in the upper layer N+1 631 based on pictures in the lower layer N 632, 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. In this way, the poor coding efficiency of intra prediction may be limited to pictures of 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 by entries in a reference picture list included in a reference picture list structure.

[0111] The pictures 611-618 may be included in an AU. An AU is a set of coded pictures included in different layers and associated with the same output time during decoding. For clarity of the explanation of the concepts described herein, an AU includes a current AU 628 and a previous AU 627. The current AU 628 is an AU corresponding to a specific output time in the decoding process and / or the HRD conformance check process. The previous AU 627 is an AU that occurs earlier in decoding order than the current AU 628. For example, the previous AU 627 may be the AU immediately preceding the current AU 628 in decoding order.

[0112] Coded pictures within the same AU are scheduled to be output from the DPB at the decoder at the same time. For example, pictures 613 and 617 are in the same current AU 628. Pictures 612 and 616 are in a previous AU 627 that is different from the current AU 628 that contains pictures 613 and 617. Pictures 612 and / or 616 may be decoded before pictures 613 and / or 617 because the previous AU 627 precedes the current AU 628 in decoding order. Also, pictures 613 and 617 of the current AU 627 may be displayed as alternatives. For example, picture 617 may be displayed if a smaller picture size is desired, and picture 613 may be displayed if a larger picture size is desired. If a larger picture size is desired, picture 613 is output, and picture 617 is used only for inter-layer prediction 621. In this case, picture 617 is discarded without being output when inter-layer prediction 621 is completed. Also, when switching from layer N 631 to layer N+1 632, picture 616 of the preceding AU 627 may be output, and picture 613 of the current AU 628 may be output. This type of switching may occur, for example, when a user increases the size of the video output (e.g., increases the size of the video window or switches to a larger screen) and / or when network conditions improve. Similarly, when switching from layer N+1 632 to layer N 631, picture 612 of the preceding AU 627 may be output, and picture 617 from the current AU 628 may be output. This type of switching may occur, for example, when a user reduces the size of the video output (e.g., reduces the size of the video window or switches to a smaller screen) and / or when network conditions improve.

[0113] An AU may be further divided into one or more picture units (PUs) 625. A PU 625 is a subset of an AU that contains a single coded picture. A PU 625 may be formally defined as a set of NAL units that are related to each other according to specified classification rules, are consecutive in decoding order, and contain exactly one coded picture. Note that a PU 625 may be referred to as a decoding unit (DU) when described in terms of an HRD and / or related conformance tests.

[0114] 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. Furthermore, 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 may check the bitstream 700 for standards compliance before sending it to the decoder for decoding.

[0115] The bitstream 700 includes a VPS 711, one or more SPSs 713, multiple picture parameter sets (PPSs) 715, multiple adaptation parameter sets (APSs) 716, multiple picture headers 718, multiple 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 image sequences, 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 sizing, bit depth, coding tool parameters, bit rate limits, etc. Note that while each sequence points to an SPS 713, in some examples, a single SPS 713 can contain data for multiple sequences. The PPS 715 contains parameters that apply to an entire picture. Thus, each picture in a video sequence may reference a PPS 715. Note that, in some examples, while each picture references a PPS 715, a single PPS 715 can contain data for multiple pictures. For example, multiple similar pictures may be coded according to similar parameters. In such cases, a single PPS 715 may contain data for such similar pictures. The PPS 715 may indicate coding tools, quantization parameters, offsets, etc. available for slices in the corresponding picture.

[0116] An APS 716 is a syntax structure that includes syntax elements / parameters that apply to one or more slices 727 in one or more pictures 725. Such correlation can be determined based on syntax elements found in slice headers 717 associated with the slices 727. For example, an APS 716 can apply to at least one but fewer than all slices 727 in a first picture 721, at least one but fewer than all slices 727 in a second picture 725, etc. An APS 716 can be separated into multiple types based on the parameters included in the APS 716. Such types include adaptive loop filter (ALF) APS, luma mapping with chroma scaling (LMCS) APS, and scaling list (scaling) APS. An ALF is an adaptive block-based filter that includes a transfer function controlled by variable parameters and uses feedback from a feedback loop to refine the transfer function. Additionally, an ALF is used to correct coding artifacts (e.g., errors) that result from block-based coding, such as blurring and ringing artifacts. Thus, the ALF parameters included in the ALF APS may include parameters selected by an encoder to cause the ALF to remove block-based coding artifacts during decoding at the decoder. LMCS is a process applied as part of the decoding process that maps luma samples to specific values ​​and, in some cases, applies scaling operations to the values ​​of chroma samples. The LMCS tool can reshape the luma component based on the mapping to the corresponding chroma components to reduce rate distortion. Thus, the LMCS APS includes parameters selected by an encoder to cause the LMCS tool to reshape the luma component. The scaling list APS includes coding tool parameters associated with the quantization matrix used by the specified filter.Thus, the APS 716 may contain parameters used to apply various filters to the coded slices 727 during conformance testing in the HRD and / or during decoding in the decoder.

[0117] The picture header 718 is a syntax structure that includes syntax elements that apply to all slices 727 of a coded picture 725. For example, the picture header 718 may include picture order count information, reference picture data, data related to an Intra Random Access Point (IRAP) picture, data related to filter application for the picture 725, etc. A PU may include exactly one picture header 718 and exactly one picture 725. Thus, the bitstream 700 may include exactly one picture header 718 per picture 725. The slice header 717 includes parameters specific to each slice 727 in the picture 725. Thus, there may be one slice header 717 for each slice 727 in a video sequence. The slice header 717 may include slice type information, filtering information, prediction weights, tile entry points, deblocking parameters, etc. In some cases, syntax elements may be the same for all slices 727 in a picture 725. To reduce redundancy, the picture header 718 and the slice header 717 may share certain types of information. For example, certain parameters (e.g., filtering parameters) may be included in the picture header 718 if they apply to the entire picture 725, and may be included in the slice header 717 if they apply to a group of slices 727 that are a subset of the entire picture 725.

[0118] The 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, the image data 720 may include a layer 723, a picture 725, and / or a slice 727. A layer 723 is a set of VCL NAL units and associated non-VCL NAL units that share specified characteristics (e.g., a common resolution, frame rate, picture size, etc.) as indicated by a layer ID such as nuh_layer_id. For example, a layer 723 may include a set of pictures 725 that share the same nuh_layer_id. A layer 723 may be substantially similar to layers 631 and / or 632. nuh_layer_id is a syntax element that specifies an identifier of a 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, with the value of nuh_layer_id increasing for higher quality layers 723. Therefore, the lower layer is the layer 723 with a smaller value of nuh_layer_id, and the higher layer is the layer 723 with a larger value of nuh_layer_id.

[0119] 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 can be output for display or 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 by an integer number of complete tiles of a picture 725 contained exclusively in a single NAL unit, or an integer number of consecutive complete coding tree unit (CTU) rows (e.g., within a tile). A slice 727 is further divided into CTUs and / or coding tree blocks (CTBs). A CTU is a group of samples of a predetermined size that can be partitioned in a coding tree. A CTB is a subset of a CTU and contains 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.

[0120] The SEI message 719 is a syntax structure with specific semantics that conveys information that is not required by the decoding process to determine the values ​​of samples in the decoded picture. For example, the SEI message 719 may contain data to support the HRD process or other support data that is not directly related to decoding of the bitstream 700 at the decoder.

[0121] Various parameters are signaled within the bitstream 700 to support decoding of pictures 725, slices 727, and / or other partitions thereof to recover a decoded video sequence. For example, the SPS 713 may include an SPS picture maximum width in luma samples (sps_pic_width_max_in_luma_samples) 731 and an SPS picture maximum height in luma samples (sps_pic_height_max_in_luma_samples) 732. The sps_pic_width_max_in_luma_samples 731 is a signaled data element that specifies the maximum width, in luma samples, of each decoded picture 725 that references the SPS 713. The sps_pic_width_max_in_luma_samples 732 is a signaled data element that specifies the maximum height, in luma samples, of each decoded picture 725 that references the SPS 713. Thus, sps_pic_width_max_in_luma_samples 731 and sps_pic_width_max_in_luma_samples 732 specify the maximum width and height, respectively, of each picture 725 in the coded video sequence associated with SPS 713 .

[0122] As described above, the encoder can transmit various layers 723 of a picture 725 to a decoder depending on conditions at the decoder. Furthermore, the transmitted layers 723 can change as conditions at the decoder change. For example, a picture 725 may be transmitted at a higher resolution / larger size when network conditions are optimal and at a lower resolution / smaller size when network conditions deteriorate. One problem with this implementation is that the DPB at the decoder may overflow during a layer 723 change, which can cause a degraded user experience. For example, the DPB may be filled with a picture 725 at a lower resolution before the layer 723 is changed to a higher resolution. Thus, the DPB may not have enough space to store the high-resolution picture 725 received from the upper layer 723 after the switch. This can cause the DPB to overflow, resulting in errors and preventing proper decoding and display of the high-resolution picture 725.

[0123] To address this issue, the no output flag for the previous picture (NoOutputOfPriorPicsFlag) can be used. NoOutputOfPriorPicsFlag is a variable derived by the decoder during conformance testing and / or by the HRD. NoOutputOfPriorPicsFlag specifies when to empty the DPB without outputting the picture 725 contained in the DPB. Thus, NoOutputOfPriorPicsFlag can be set to empty the DPB to make space for a new picture 725. This can occur even if a previous picture 725 in the DPB is designated for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a detected change in the size of the picture 725 due to a change in picture width and / or picture height between the current picture 725 and the previous picture 725.

[0124] ARC is a mechanism that supports resolution changes. Generally, a decoder swaps between sequences and / or layers 723 at IRAP pictures because IRAP pictures can be decoded without reference to other pictures 725 and therefore can always be decoded. Non-IRAP pictures are coded with reference to other pictures 725, and therefore a decoder may not have enough information to decode a non-IRAP picture as the first picture 725 in a sequence and / or layer 723. ARC can support such transitions. ARC can dynamically change the resolution of a picture 725 in a DPB to match the resolution of a subsequent picture 725. Thus, a reference picture 725 in a DPB can be changed from a first resolution to a second resolution, so that a non-IRAP picture at the second resolution can be decoded based on the reference picture 725 without the need for an intervening IRAP picture. A problem with ARC is that it can prevent the NoOutputOfPriorPicsFlag from working properly. Specifically, ARC can change the spatial resolution of the previous picture 725 to be the same as the current picture 725. This prevents the picture resize check from working correctly. Therefore, ARC can result in DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

[0125] The bitstream 700 is configured to allow the NoOutputOfPriorPicsFlag to be correctly enabled when ARC is used. For example, instead of checking the picture height and width, the decoder can check for changes in the maximum picture height and maximum picture width. The maximum picture height and maximum picture width are not changed by ARC. Therefore, by properly setting the NoOutputOfPriorPicsFlag, it is possible to prevent DPB overflow due to a change in spatial resolution even when ARC is used during a change in layer 723.

[0126] In one specific example, the decoder may use the PicWidthMaxInSamplesY and PicHeightMaxInSamplesY variables when setting NoOutputOfPriorPicsFlag. PicWidthMaxInSamplesY is a derived variable indicating the maximum width, in luma samples, of each decoded picture 725 in the corresponding sequence and / or layer 723. PicHeightMaxInSamplesY is a derived variable indicating the maximum height, in luma samples, of each decoded picture 725 in the corresponding sequence and / or layer 723. PicWidthMaxInSamplesY may be derived based on sps_pic_width_max_in_luma_samples 731 of the SPS 713. Additionally, PicHeightMaxInSamplesY may be derived based on sps_pic_height_max_in_luma_samples 732 of the SPS 713.

[0127] NoOutputOfPriorPicsFlag may then be set based on PicHeightMaxInSamplesY and / or PicWidthMaxInSamplesY. For example, NoOutputOfPriorPicsFlag may be set if the value of PicWidthMaxInSamplesY for an AU (including the current picture 725) and the value of PicWidthMaxInSamplesY for the preceding AU (including the preceding picture 725) differ in decoding order. In another example, NoOutputOfPriorPicsFlag may be set if the value of PicHeightMaxInSamplesY for an AU (including the current picture 725) differs in decoding order from the value of PicHeightMaxInSamplesY for the preceding AU (including the preceding picture 725).

[0128] When the NoOutputOfPriorPicsFlag is set, the DPB can be emptied as needed to prevent DPB overflow. For example, the DPB can be emptied after parsing the slice header 717 of the first slice 727 of the current picture 725 and before decoding the current picture 725. This empties the previous picture 725 from the previous AU from the DPB before the current picture 725 is decoded, thus emptying storage space in the DPB for the current picture 725 before it is needed.

[0129] In another example, a reference picture list may be constructed for the slice 727, and a reference picture list marking process may be performed before setting the NoOutputOfPriorPicsFlag. The reference picture list construction process may determine which pictures 725 are reference pictures for the current picture 725. The reference picture list marking process may then indicate whether a picture 725 in the DPB is unused for reference, used for short-term reference, and / or used for long-term reference based on the reference picture list construction process. In a particular example, the DPB is emptied when the NoOutputOfPriorPicsFlag is set and each of the preceding pictures 725 in the DPB is marked as unused for reference. In this manner, the DPB is not emptied if it contains reference pictures. Additionally, the DPB may use a DPB fullness variable, which is a data element that indicates the number of pictures stored in the DPB. The DPB fullness variable may be decremented by one for each picture removed when emptying the DPB.

[0130] Using the examples described herein, NoOutputOfPriorPicsFlag can be set to empty the DPB as needed to prevent DPB overflow. Accordingly, the embodiments included herein can be employed to avoid various decoding errors associated with switching between layers 723. A similar process can also be used by the HRD operating in the encoder when checking an encoded bitstream for standards conformance. This process can prevent the HRD from having DPB overflow when checking layers 723 for conformance, thus reducing the occurrence of conformance test failures during encoding. This results in improved encoder and decoder functionality. Furthermore, coding efficiency can be increased, thereby reducing the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0131] The aforementioned information will now be explained in more detail below. Layered video coding is also referred to as scalable video coding or scalable video coding. Scalability in video coding can 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, multiview scalability, frame rate scalability, etc. When a multi-layer coding technique is used, a picture or a portion thereof may be coded without using a reference picture (intra-prediction), coded by referencing a reference picture in the same layer (inter-prediction), and / or 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 in which pictures in different layers have different resolutions.

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

[0133] Scalable HEVC (SHVC) is an extension of HEVC that supports 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 more advanced and efficient 3D video coding than MV-HEVC. Temporal scalability can be included as an integral part of a single-layer HEVC codec. In multi-layer extensions of HEVC, decoded pictures used for inter-layer prediction come only from the same AU and are treated as long-term reference pictures (LTRPs). Such pictures are assigned reference indices in a reference picture list along with other temporal reference pictures in the current layer. Inter-layer prediction (ILP) is achieved at the prediction unit level by setting the value of a reference index to reference an inter-layer reference picture in a reference picture list. Spatial scalability involves resampling a reference picture or part of it if the ILRP has a different spatial resolution than the current picture being encoded or decoded. The resampling of the reference picture can be achieved either at the picture level or at the coding block level.

[0134] VVC can also support layered video coding. A VVC bitstream can include multiple layers. All layers may be independent of each other. For example, each layer may be coded without inter-layer prediction. In this case, each layer is also referred to as a co-cast layer. In some cases, some layers are coded using ILP. A flag in the VPS can indicate whether a layer is a co-cast layer or whether some layers use ILP. If some layers use ILP, the layer dependency of the inter-layer is 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 are designated as output layers. An output layer is a layer of the OLS that is output. In some implementations of VVC, if a layer is a co-cast layer, only one layer may be selected for decoding and output. In some implementations of VVC, when any layer uses ILP, the entire bitstream, including all layers, is specified to be decoded. Furthermore, among these layers, a specific layer is designated as an output layer. The output layer may be designated as the top layer only, all layers, or the top layer plus a set of designated lower layers.

[0135] The aforementioned aspects include certain problems. For example, the nuh_layer_id values ​​of SPS, PPS, and APS NAL units may not be properly constrained. Furthermore, the TemporalId value of SEI NAL units may not be properly constrained. Also, when reference picture resampling is enabled and pictures in a CLVS have different spatial resolutions, the setting of NoOutputOfPriorPicsFlag may not be properly specified. Also, in some video coding systems, suffix SEI messages cannot be included in scalable nesting SEI messages. As another example, buffering period, picture timing, and decoding unit information SEI messages may include parsing dependencies on VPS and / or SPS.

[0136] Generally, this disclosure describes video coding improvement techniques. The description of the techniques is based on VVC. However, these techniques also apply to layered video coding based on other video codec specifications.

[0137] One or more of the problems mentioned above may be solved as follows: The nuh_layer_id values ​​of SPS, PPS, and APS NAL units are appropriately constrained in this specification. The TemporalId values ​​of SEI NAL units are appropriately constrained in this specification. The setting of NoOutputOfPriorPicsFlag is appropriately specified when reference picture resampling is enabled and pictures in a CLVS have different spatial resolutions. A suffix SEI message can be included in a scalable nesting SEI message. The parsing dependency of BP, PT, and DUI SEI messages on VPS or SPS can be removed by repeating the syntax element decoding_unit_hrd_params_present_flag in the BP SEI message syntax, the syntax elements decoding_unit_hrd_params_present_flag and decoding_unit_cpb_params_in_pic_timing_sei_flag in the PT SEI message syntax, and the syntax element decoding_unit_cpb_params_in_pic_timing_sei_flag in the DUI SEI message.

[0138] An exemplary implementation of the aforementioned mechanism is as follows: An example of general NAL unit semantics is given below:

[0139] nuh_temporal_id_plus1-1 specifies the temporal identifier of the NAL unit. The value of nuh_temporal_id_plus1 should not be equal to 0. The variable TemporalId can be derived as follows: TemporalId=nuh_temporal_id_plus1-1 When nal_unit_type is in the range IDR_W_RADL to RSV_IRAP_13 (inclusive), TemporalId must be equal to 0. When nal_unit_type is equal to STSA_NUT, TemporalId must not be equal to 0.

[0140] The value of TemporalId MUST be the same for all VCL NAL units of an access unit. The value of TemporalId for a coded picture, layer access unit, or access unit MAY be the value of TemporalId of the VCL NAL units of the coded picture, layer access unit, or access unit. The value of TemporalId for a sub-layer representation MAY be the maximum value of TemporalId of all VCL NAL units in the sub-layer representation.

[0141] The value of TemporalId for non-VCL NAL units is constrained as follows: If nal_unit_type is equal to DPS_NUT, VPS_NUT, or SPS_NUT, then TemporalId shall be equal to 0, and the TemporalId of the access unit that contains the NAL unit shall be equal to 0. Otherwise, if nal_unit_type is equal to EOS_NUT or EOB_NUT, then TemporalId shall be equal to 0. Otherwise, if nal_unit_type is equal to AUD_NUT, FD_NUT, PREFIX_SEI_NUT, or SUFFIX_SEI_NUT, then TemporalId shall be equal to the TemporalId of the access unit that contains the NAL unit. Otherwise, if nal_unit_type is equal to PPS_NUT or APS_NUT, then TemporalId shall be greater than or equal to the TemporalId of the access unit that contains the NAL unit. If the NAL unit is a non-VCL NAL unit, the value of TemporalId MUST be equal to the minimum of the TemporalId values ​​of all access units to which the non-VCL NAL unit applies. If nal_unit_type is equal to PPS_NUT or APS_NUT, TemporalId MAY be greater than or equal to the TemporalId of the containing access unit. This is because all PPSs and APSs may be included at the beginning of the bitstream. Furthermore, the first coded picture has TemporalId equal to 0.

[0142] Examples of sequence parameter set RBSP semantics are as follows: An SPS RBSP must be available to the decoding process before it can be referenced. An SPS may be included in at least one access unit with TemporalId equal to 0, or may be provided via an external mechanism. An SPS NAL unit containing an SPS may be constrained to have a nuh_layer_id equal to the lowest nuh_layer_id value of the PPS NAL unit that references the SPS.

[0143] Exemplary picture parameter set RBSP semantics are as follows: The PPS RBSP must be available to the decoding process before it is referenced. The PPS should be included in at least one access unit with a TemporalId less than or equal to the TemporalId of the PPS NAL unit, or provided via an external mechanism. The PPS NAL unit containing the PPS RBSP should have a nuh_layer_id equal to the lowest nuh_layer_id value of the coded slice NAL units that reference the PPS.

[0144] The semantics of an exemplary adaptation parameter set are as follows: Each APS RBSP must be available to the decoding process before it is referenced. The APS should also be included in at least one access unit with a TemporalId less than or equal to the TemporalId of the coded slice NAL unit that references the APS or is provided via an external mechanism. An APS NAL unit can be shared by pictures / slices of multiple layers. The nuh_layer_id of an APS NAL unit must be equal to the lowest nuh_layer_id value of the coded slice NAL unit that references the APS NAL unit. Alternatively, an APS NAL unit may not be shared by pictures / slices of multiple layers. The nuh_layer_id of an APS NAL unit must be equal to the nuh_layer_id of the slice that references the APS.

[0145] In one example, removing a picture from the DPB before decoding the current picture is described as follows: Removing a picture from the DPB before decoding the current picture (but after parsing the slice header of the first slice of the current picture) may be done at the CPB removal time of the first decoding unit of access unit n (containing the current picture). This proceeds as follows: A decoding process for reference picture list construction is invoked, and a decoding process for reference picture marking is invoked.

[0146] If the current picture is a Coded Layer Video Sequence Start (CLVSS) picture that is not picture 0, the following ordered steps are applied: For the decoder under test, the variable NoOutputOfPriorPicsFlag is derived as follows: If the values ​​of pic_width_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8, or sps_max_dec_pic_buffering_minus1[Htid] derived from the SPS are different from the values ​​of pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8, or sps_max_dec_pic_buffering_minus1[Htid] derived from the SPS referenced by the preceding picture, then NoOutputOfPriorPicsFlag may be set to 1 by the decoder under test, regardless of the value of no_output_of_prior_pics_flag. Note that under these conditions it may be preferable to set NoOutputOfPriorPicsFlag equal to no_output_of_prior_pics_flag, in which case the decoder under test may set NoOutputOfPriorPicsFlag to 1. Otherwise, NoOutputOfPriorPicsFlag may be set equal to no_output_of_prior_pics_flag.

[0147] The derived NoOutputOfPriorPicsFlag value for the decoder under test is applied to the HRD. When the resulting NoOutputOfPriorPicsFlag value is equal to 1, all picture storage buffers in the DPB are emptied without outputting the pictures they contain, and DPB fullness is set to zero. If both of the following conditions apply to any picture k in the DPB, all such pictures k in the DPB are removed from the DPB: Picture k is marked as unused for reference, and picture k has a PictureOutputFlag equal to 0, or the corresponding DPB output time is less than or equal to the CPB removal time of the first decoding unit (denoted as decoding unit m) of the current picture n. This can occur if DpbOutputTime[k] is less than or equal to DuCpbRemovalTime[m]. For each picture removed from the DPB, DPB fullness is decremented by 1.

[0148] In one example, outputting and removing a picture from the DPB is described as follows: Outputting and removing a picture from the DPB before decoding the current picture (but after parsing the slice header of the first slice of the current picture) may occur when the first decoding unit of the access unit containing the current picture is removed from the CPB and proceeds as follows: The decoding process for reference picture list construction and the decoding process for reference picture marking are invoked.

[0149] If the current picture is a CLVSS picture that is not picture zero, then the following sequence of steps is applied: For the decoder under test, the variable NoOutputOfPriorPicsFlag may be derived as follows: If the values ​​of pic_width_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8, or sps_max_dec_pic_buffering_minus1[Htid] derived from the SPS are different from the values ​​of pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8, or sps_max_dec_pic_buffering_minus1[Htid] derived from the SPS referenced by the preceding picture, then NoOutputOfPriorPicsFlag may be set to 1 by the decoder under test, regardless of the value of no_output_of_prior_pics_flag. Note that under these conditions it is preferable to set NoOutputOfPriorPicsFlag equal to no_output_of_prior_pics_flag, but in this case the decoder under test may set NoOutputOfPriorPicsFlag to 1. Otherwise, NoOutputOfPriorPicsFlag may be set equal to no_output_of_prior_pics_flag.

[0150] The value of NoOutputOfPriorPicsFlag derived for the decoder under test may be applied to the HRD as follows: If NoOutputOfPriorPicsFlag is equal to 1, then all picture storage buffers in the DPB are emptied without output of the pictures they contain, and DPB fullness is set to 0. Otherwise (NoOutputOfPriorPicsFlag is equal to 0), all picture storage buffers containing pictures that are marked as not required for output and are not used for reference are emptied (no output), and all non-empty picture storage buffers in the DPB are emptied by repeatedly invoking the bumping process, and DPB fullness is set to 0.

[0151] Otherwise (the current picture is not a CLVSS picture), all picture storage buffers containing pictures marked as not needed for output and unused for reference are emptied (no output). For each picture storage buffer emptied, DPB fullness is decremented by 1. When one or more of the following conditions are true, the bumping process is repeatedly invoked, further decrementing DPB fullness by 1 for each additional picture storage buffer emptied until none of the following conditions are true: A condition is that the number of pictures in the DPB marked as needed for output is greater than sps_max_num_reorder_pics[Htid]. Another condition is that sps_max_latency_increase_plus1[Htid] is not equal to 0 and there is at least one picture in the DPB marked as needed for output whose associated variable PicLatencyCount is greater than or equal to SpsMaxLatencyPictures[Htid]. Another condition is that the number of pictures in the DPB is equal to or greater than SubDpbSize[Htid].

[0152] An exemplary general SEI message syntax is as follows:

[0153] [Table 1]

[0154] An example of scalable nesting SEI message syntax is as follows:

[0155] [Table 2]

[0156] Examples of scalable nesting SEI message semantics are as follows: A scalable nesting SEI message provides a mechanism to associate an SEI message with a particular layer in the context of a particular OLS or with a particular layer outside 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 scalably nested SEI message. Bitstream conformance can require that the following restrictions apply when an SEI message is contained in a scalable nesting SEI message:

[0157] An SEI message with payloadType of 132 (decoded picture hash) or 133 (scalable nesting) SHOULD NOT be included in a scalable nesting SEI message. If a scalable nesting SEI message contains a buffering duration, picture timing, or decoding unit information SEI message, the scalable nesting SEI message SHOULD NOT contain any other SEI messages with payloadType other than 0 (buffering duration), 1 (picture timing), or 130 (decoding unit information).

[0158] Bitstream conformance can also require that the following restrictions apply to the value of nal_unit_type of SEI NAL units that contain scalable nesting SEI messages: If the scalable nesting SEI message contains an SEI message with payloadType equal to 0 (buffering duration), 1 (picture timing), 130 (decoding 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 equal to PREFIX_SEI_NUT. If the 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.

[0159] nesting_ols_flag may be set equal to 1 to specify that the scalably nested 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 scalably nested SEI message applies to a particular layer in general (e.g., not in the context of an OLS).

[0160] Bitstream conformance may require that the following restrictions apply to the value of nesting_ols_flag: If the scalable nesting SEI message contains an SEI message with payloadType equal to 0 (buffering duration), 1 (picture timing), or 130 (decoding unit information), the value of nesting_ols_flag shall be equal to 1. If the 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.

[0161] nesting_num_olss_minus1 plus 1 specifies the number of OLSs to which the scalably nested SEI message applies. The value of nesting_num_olss_minus1 MUST be in the range 0 to TotalNumOlss-1, inclusive. 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 scalably nested SEI message applies, when nesting_ols_flag is 1. The value of nesting_ols_idx_delta_minus1[i] MUST be in the range 0 to TotalNumOlss-2, inclusive. The variable NestingOlsIdx[i] may be derived as follows: if(i==0) NestingOlsIdx[i]=nesting_ols_idx_delta_minus1[i] else NestingOlsIdx[i]=NestingOlsIdx[i-1]+nesting_ols_idx_delta_minus1[i]+1

[0162] nesting_num_ols_layers_minus1[i]+1 specifies the number of layers to which the scalably nested SEI message applies in the context of the NestingOlsIdx[i]th OLS. The value of nesting_num_ols_layers_minus1[i] must be in the range from 0 to NumLayersInOls[NestingOlsIdx[i]]-1, inclusive.

[0163] 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 scalably nested SEI message applies, in the context of the NestingOlsIdx[i]th OLS, if nesting_ols_flag is 1. The value of nesting_ols_layer_idx_delta_minus1[i] must be in the range from 0 to NumLayersInOls[nestingOlsIdx[i]]-2, inclusive.

[0164] The variable NestingOlsLayerIdx[i][j] can be derived as follows: if(j==0) NestingOlsLayerIdx[i][j]=nesting_ols_layer_idx_delta_minus1[i][j] else NestingOlsLayerIdx[i][j]=NestingOlsLayerIdx[i][j-1]+ nesting_ols_layer_idx_delta_minus1[i][j]+1

[0165] The lowest of all values ​​of LayerIdInOls[NestingOlsIdx[i]][NestingOlsLayerIdx[i][0]], for i in the range 0 to nesting_num_olss_minus1, inclusive, MUST 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 scalably nested SEI message generally applies to all layers with a 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 scalably nested SEI message generally 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.

[0166] nesting_num_layers_minus1 plus 1 specifies the number of layers to which a scalably nested SEI message generally applies. If nuh_layer_id is the nuh_layer_id of the current SEI NAL unit, the value of nesting_num_layers_minus1 MUST be in the range of 0 to vps_max_layers_minus1-GeneralLayerIdx[nuh_layer_id]. nesting_layer_id[i] specifies the nuh_layer_id value of the i-th layer to which a scalably nested SEI message generally applies if nesting_all_layers_flag is 0. The value of nesting_layer_id[i] MUST be greater than nuh_layer_id, where nuh_layer_id is the nuh_layer_id of the current SEI NAL unit.

[0167] If nesting_ols_flag is equal to 1, the variable NestingNumLayers, which specifies the number of layers to which a scalably nested SEI message generally applies, and the list NestingLayerId[i], for i in the range 0 to NestingNumLayers-1, which specifies a list of nuh_layer_id values ​​of the layers to which a scalably nested SEI message generally applies, are derived as follows, where nuh_layer_id is the nuh_layer_id of the current SEI NAL unit: if(nesting_all_layers_flag){ NestingNumLayers=vps_max_layers_minus1+1-GeneralLayerIdx[nuh_layer_id] for(i=0;i <NestingNumLayers;i++) NestingLayerId[i]=vps_layer_id[GeneralLayerIdx[nuh_layer_id]+i](D-2) }else{ NestingNumLayers=nesting_num_layers_minus1+1 for(i=0;i <NestingNumLayers;i++) NestingLayerId[i]=(i==0)?nuh_layer_id:nesting_layer_id[i] }

[0168] nesting_num_seis_minus1 plus 1 specifies the number of scalably nested SEI messages. The value of nesting_num_seis_minus1 can be any value in the range 0 to 63, inclusive. nesting_0_bit should be set equal to 0.

[0169] 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 as described herein. The video coding device 800 includes a downstream port 820, an upstream port 850, and / or a transceiver unit (Tx / Rx) 810 including a transmitter and / or receiver for communicating data upstream and / or downstream across 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, optical-electrical (OE) components, electrical-optical (EO) components, and / or wireless communication components coupled to the upstream port 850 and / or downstream port 820 for data communication 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 exchanging data with 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, mouse, trackball, etc., and / or corresponding interfaces for interacting with such output devices.

[0170] The processor 830 is implemented in hardware and software. The processor 830 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 830 communicates 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 performs the disclosed embodiments described herein, such as 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 signal and / or read various parameters as described herein. Furthermore, coding module 814 may be used to encode and / or decode video sequences based on such parameters. Accordingly, the signaling modifications described herein can increase efficiency and / or avoid errors in coding module 814. Accordingly, coding module 814 may be configured to implement mechanisms to address one or more of the problems described above. Thus, coding module 814 allows 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 issues inherent in video coding techniques. Furthermore, coding module 814 achieves transformation of video coding device 800 to different states.Alternatively, the coding module 814 may be implemented as instructions stored in memory 832 and executed by the processor 830 (eg, as a computer program product stored on a non-transitory medium).

[0171] Memory 832 includes one or more memory types such as a disk, a tape drive, a solid-state drive, read-only memory (ROM), random access memory (RAM), flash memory, ternary content addressable memory (TCAM), static random access memory (SRAM), etc. Memory 832 may be used as overflow data storage to store such programs when such programs are selected for execution and to store instructions and data read during the execution of the programs.

[0172] 9 is a flowchart of an example method 900 for encoding a video sequence into a bitstream, such as bitstream 700, to support the use of NoOutputOfPriorPicsFlag in conjunction with ARC. Method 900 may be used in an encoder, such as codec system 200, encoder 300, and / or video coding device 800, when performing method 100. Furthermore, method 900 may operate on HRD 500 and, therefore, may perform conformance testing on multi-layer video sequence 600.

[0173] 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 multiple pictures into the bitstream. For example, a picture may be included in an AU. Furthermore, a picture may be included in a layer. The encoder may encode one or more layers containing pictures into the multi-layer bitstream. A layer may include a set of VCL NAL units with the same layer ID and associated non-VCL NAL units. A layer may include a set of VCL NAL units containing video data of an encoded picture and any parameter set used to code such a picture. One or more layers may be output layers. Layers that are not output layers are encoded to support reconstruction of output layers, but such support layers are not intended for output at a decoder. In this manner, the encoder can encode various combinations of layers for transmission to a decoder upon request. Layers can be transmitted as needed to allow a decoder to obtain different representations of a video sequence depending on network conditions, hardware capabilities, and / or user preferences. When a bitstream is encoded, the encoder can use the HRD to check the bitstream for conformance.

[0174] In step 903, the HRD may decode a previous picture in the previous AU and store the previous picture in the DPB. For example, the previous picture may be part of the first layer. The HRD may then check for problems that occur during switching to the second layer.

[0175] In step 905, the HRD may prepare to decode the current picture in the second layer of the current AU. The HRD may parse the slice header of the first slice of the current picture. The HRD may also construct a reference picture list for the first slice based on the reference picture list. The HRD may also perform a reference picture list marking process for pictures in the DPB (e.g., including preceding pictures) to mark each picture as unused for reference, used for short-term reference, and / or used for long-term reference.

[0176] In step 907, the HRD may set NoOutputOfPriorPicsFlag to a corresponding value (e.g., 1) if the value of PicWidthMaxInSamplesY of the current picture in the current AU differs from the value of PicWidthMaxInSamplesY of the preceding picture in the preceding AU in decoding order. PicWidthMaxInSamplesY may be derived based on sps_pic_width_max_in_luma_samples obtained from the SPS of the bitstream. Furthermore, the HRD may set NoOutputOfPriorPicsFlag if the value of PicHeightMaxInSamplesY of the current picture in the current AU differs from the value of PicHeightMaxInSamplesY of the preceding picture in the preceding AU in decoding order. PicHeightMaxInSamplesY may be derived based on sps_pic_height_max_in_luma_samples obtained from the SPS of the bitstream. NoOutputOfPriorPicsFlag can be set to 1 to specify that all picture storage buffers in the DPB should be emptied without output of the pictures they contain, and that the DPB fullness variable should be set equal to 0.

[0177] In step 909, the HRD may empty the DPB without selecting any included pictures for output based on the value of NoOutputOfPriorPicsFlag (e.g., if NoOutputOfPriorPicsFlag is set to 1). The HRD may also decrement (e.g., decrease by 1) the DPB fullness variable for each picture removed when emptying the DPB. Note that NoOutputOfPriorPicsFlag may only be set in step 907, and therefore, in step 909, the DPB may be emptied only if all pictures in the DPB, including preceding pictures, have been marked as unused for reference according to the reference picture list marking process of step 905.

[0178] Next, the HRD can decode the current picture in the current AU and store the current picture in the DPB in step 911. Therefore, the DPB is emptied in step 909 before the current picture in the current AU is decoded in step 911. Furthermore, after parsing the slice header of the first slice of the current picture in step 905, the DPB is emptied in step 909.

[0179] In some cases, the NoOutputOfPriorPicsFlag can prevent DPB overflow when switching between a first layer containing the preceding picture and a second layer containing the current picture. Thus, the HRD conformance test can be successful when checking the current picture for conformance. Assuming no other errors are encountered, the HRD conformance test is complete. Assuming the conformance test is successful, the bitstream is stored in long-term memory for communication to the decoder in step 913, e.g., via a content server. The layers of the bitstream can then be transmitted to the decoder upon request.

[0180] 10 is a flowchart of an example method 1000 of decoding a video sequence from a bitstream, such as bitstream 700, while using NoOutputOfPriorPicsFlag with ARC. Method 1000 may be used in a decoder, such as codec system 200, decoder 400, and / or video coding device 800, when performing method 100. Furthermore, method 1000 may be used on a multi-layer video sequence 600 that has been checked for conformance by an HRD, such as HRD 500.

[0181] 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 and / or in response to a request by the decoder. In step 1001, the decoder receives a bitstream including multiple pictures. For example, a picture may be included in an AU. Furthermore, a picture may be included in a layer. A layer may include a set of VCL NAL units having the same layer ID and associated non-VCL NAL units. For example, a set of VCL NAL units is part of a layer if they all have the same layer ID. A layer may include a set of VCL NAL units containing video data of a picture and any parameter sets used to code such a picture in the associated non-VCL NAL units. One or more layers may be output layers. Layers that are not output layers are encoded to support reconstruction of an output layer, but such support layers are not intended for output. In this way, the decoder can obtain different representations of the video sequence depending on network conditions, hardware capabilities, and / or user settings.

[0182] In step 1003, the decoder may decode a previous picture in a previous AU and store the previous picture in the DPB. For example, the previous picture may be part of a first layer. The decoder may decide to switch to a second layer, for example, due to user input and / or due to a change in operating conditions. For example, the decoder may request switching to the second layer.

[0183] In step 1005, the decoder may prepare to decode the current picture in the second layer of the current AU. The decoder may parse the slice header of the first slice of the current picture. The decoder may also construct a reference picture list for the first slice based on the reference picture list. The decoder may also perform a reference picture list marking process on pictures in the DPB (e.g., including preceding pictures) to mark each picture as unused for reference, used for short-term reference, and / or used for long-term reference.

[0184] In step 1007, the decoder may set NoOutputOfPriorPicsFlag to a corresponding value (e.g., 1) if the value of PicWidthMaxInSamplesY of the current picture in the current AU differs from the value of PicWidthMaxInSamplesY of the preceding picture in the preceding AU in decoding order. PicWidthMaxInSamplesY may be derived based on sps_pic_width_max_in_luma_samples obtained from the SPS of the bitstream. Furthermore, the decoder may set NoOutputOfPriorPicsFlag if the value of PicHeightMaxInSamplesY of the current picture in the current AU differs from the value of PicHeightMaxInSamplesY of the preceding picture in the preceding AU in decoding order. PicHeightMaxInSamplesY may be derived based on sps_pic_height_max_in_luma_samples obtained from the SPS of the bitstream. NoOutputOfPriorPicsFlag can be set to 1 to specify that all picture storage buffers in the DPB should be emptied without output of the pictures they contain, and that the DPB fullness variable should be set equal to 0.

[0185] In step 1009, the decoder may empty the DPB without selecting any included pictures for output based on the value of NoOutputOfPriorPicsFlag (e.g., if NoOutputOfPriorPicsFlag is set to 1). The decoder may also decrement (e.g., decrease by 1) the DPB fullness variable for each picture removed when emptying the DPB. Note that NoOutputOfPriorPicsFlag may only be set in step 1007, and therefore, in step 1009, the DPB may be emptied only if all pictures in the DPB, including preceding pictures, have been marked as unused for reference according to the reference picture list marking process of step 1005.

[0186] Next, the decoder can decode the current picture in the current AU and store the current picture in the DPB in step 1011. Therefore, the DPB is emptied in step 1009 before the current picture in the current AU is decoded in step 1011. Furthermore, the DPB is emptied in step 1009 after the slice header of the first slice of the current picture is parsed in step 1005. In some cases, the NoOutputOfPriorPicsFlag can prevent DPB overflow when switching between a first layer containing a preceding picture and a second layer containing the current picture. Therefore, using the NoOutputOfPriorPicsFlag can increase the functionality of the decoder.

[0187] In step 1013, the decoder may output the current picture from the DPB for display as part of the decoded video sequence.

[0188] 11 is a schematic diagram of an example system 1100 for coding a video sequence into a bitstream while using NoOutputOfPriorPicsFlag with ARC. System 1100 may be implemented by an encoder and decoder, such as codec system 200, encoder 300, decoder 400, and / or video coding device 800. Furthermore, system 1100 may perform conformance testing on multi-layer video sequence 600 and / or bitstream 700 using HRD 500. Furthermore, system 1100 may be used when implementing methods 100, 900, and / or 1000.

[0189] The system 1100 includes a video encoder 1102. The video encoder 1102 includes an encoding module 1103 for encoding multiple pictures into a bitstream. The video encoder 1102 further includes an HRD module 1105 for checking the bitstream for conformance by setting NoOutputOfPriorPicsFlag if the value of PicWidthMaxInSamplesY of the current AU is different from the value of PicWidthMaxInSamplesY of the preceding AU in decoding order, emptying the DPB without selecting any included pictures for output based on the value of NoOutputOfPriorPicsFlag, decoding the current picture, and storing the current picture in the DPB. 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 to the video decoder 1110. The video encoder 1102 may be further configured to perform any step of the method 900.

[0190] The system 1100 further includes a video decoder 1110. The video decoder 1110 includes a receiving module 1111 for receiving a bitstream including multiple pictures. The video decoder 1110 further includes a setting module 1113 for setting NoOutputOfPriorPicsFlag if the value of PicWidthMaxInSamplesY of the current AU is different from the value of PicWidthMaxInSamplesY of the preceding AU in decoding order. The video decoder 1110 further includes an emptying module 1115 for emptying the DPB without outputting any contained pictures based on the value of NoOutputOfPriorPicsFlag. The video decoder 1110 further includes a decoding module 1117 for decoding the current picture. The video decoder 1110 further includes a storage module 1119 for storing the current picture in the DPB. The video decoder 1110 further includes an output module 1121 for outputting the current picture from the DPB for display as part of a decoded video sequence. The video decoder 1110 may be further configured to perform any step of the method 1000.

[0191] A first component is directly coupled to a second component when there are no intervening components other than a line, trace, or other intermediary 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 intermediary between the first and second components. The term "coupled" and variations thereof include both direct and indirect coupling. The use of the term "about," unless otherwise specified, means a range that includes ±10% of the subsequent numerical value.

[0192] 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 the order of steps in such methods should be understood as merely exemplary. Similarly, such methods may include additional steps, and some steps may be omitted or combined, in methods consistent with various embodiments of the present disclosure.

[0193] While several 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 of the disclosure should be considered illustrative rather than limiting, and the intention should not be limited to the details given herein. For example, various elements or components may be combined or integrated in another system, or certain features may be omitted, or not implemented.

[0194] Additionally, techniques, systems, subsystems, and methods described and illustrated as separate or distinct in 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 apparent to those skilled in the art and may be made without departing from the spirit and scope of the disclosure herein. [Explanation of symbols]

[0195] 100 How it works 200 Codec System 201 Video Signal 211 General Coda Control Components 213 Transform Scaling and Quantization Components 215 Intra-picture estimation components 217 Intra-picture prediction components 219 Motion Compensation Components 221 Motion Estimation Components 223 Decoded Picture Buffer Components 225 In-loop filter components 227 Filter Control Analysis Components 229 Scaling and Inverse Transformation Components 231 Header Formatting and CABAC Components 300 Encoder 301 Video Signal 313 Transformation and Quantization Components 317 Intra-picture prediction components 321 Motion Compensation Components 323 Decoded Picture Buffer Components 325 In-Loop Filter Components 329 Inverse Transform and Quantization Components 331 Entropy Coding Components 400 decoder 417 Intra-picture prediction components 421 Motion Compensation Components 423 Decoded Picture Buffer Components 425 In-Loop Filter Components 429 Inverse Transform and Quantization Components 433 Entropy Decoding Components 545 Decoding Process Components 549 Output Cropping Components 551 bitstream 556 Reference Pictures 557 Pictures 559 Output Cropped Picture 600 multi-layer video sequences 611~618 Pictures 621 Inter-layer Prediction 623 Inter Prediction 631, 632 layers 700 bitstream 717 Slice Header 718 Picture Header 719 SEI Message 720 image data 721 First Picture 723 Layer 725 Pictures 727 slices 800 Video Coding Device 814 Coding Module 820 downstream ports 830 processor 832 memory 850 upstream ports 860 Input and / or Output (I / O) Devices 900 ways 1000 ways 1100 System 1102 Video Encoder 1103 Encoding Module 1105 HRD module 1106 Storage Module 1107 Transmitting Module 1110 Video Decoder 1111 Receiver Module 1113 Configuration Module 1115 Module 1117 Decoding Module 1119 Memory Module 1121 Output Module

Claims

1. A method performed by a decoder, comprising: receiving a bitstream including encoded data of one or more pictures in one or more video coding layer (VCL) network abstraction layer (NAL) units and non-VCL NAL units, wherein when a NAL unit type (nal_unit_type) of a non-VCL NAL is equal to a prefix supplemental enhancement information (SEI) NAL unit type (PREFIX_SEI_NUT) or a suffix SEI NAL unit type (SUFFIX_SEI_NUT), a temporal identifier (TemporalId) of the non-VCL NAL unit is constrained to be equal to a TemporalId of an access unit (AU) that contains the non-VCL NAL unit; If the value of the maximum picture width in luma samples (PicWidthMaxInSamplesY) of the current AU is different from the value of the PicWidthMaxInSamplesY of the preceding AU in decoding order, setting the value of the no output flag (NoOutputOfPriorPicsFlag) of the previous picture to 1 by the decoder under test; emptying a decoded picture buffer (DPB) without outputting any pictures contained therein when the value of NoOutputOfPriorPicsFlag is equal to 1; decoding one or more pictures from the VCL NAL unit to generate one or more decoded pictures; A method comprising:

2. 2. The method of claim 1, further comprising: setting the value of the NoOutputOfPriorPicsFlag to 1 if a value of a maximum picture height in luma samples (PicHeightMaxInSamplesY) of the current AU is different from a value of PicHeightMaxInSamplesY of the previous AU in decoding order.

3. The method of claim 1 or 2, wherein the DPB is emptied before decoding a current picture.

4. 4. The method according to claim 1, wherein the DPB is emptied after parsing a slice header of a first slice of a current picture.

5. 5. The method of claim 1, further comprising the step of decrementing a DPB fullness variable for each picture removed when emptying the DPB.

6. The method of claim 1 , further comprising the step of: building a reference picture list and performing reference picture list marking for the current AU before setting the NoOutputOfPriorPicsFlag.

7. 7. The method of claim 1, wherein the DPB is emptied when a preceding picture is marked as unused for reference.

8. 8. A non-transitory computer-readable medium having stored thereon computer instructions that, when executed by at least one hardware processor, cause the at least one hardware processor to perform the method of any one of claims 1 to 7.

9. 1. A decoding device, comprising: one or more memories and one or more processors, the one or more memories storing instructions; 8. A decoding device, wherein the one or more processors are configured to execute the instructions to cause the decoding device to perform the method of any one of claims 1 to 7.

10. A method performed by an encoder, comprising: encoding one or more pictures into one or more Video Coding Layer (VCL) Network Abstraction Layer (NAL) units in a bitstream, the bitstream further including a non-VCL NAL unit, wherein when a NAL unit type (nal_unit_type) of the non-VCL NAL is equal to a prefix supplemental enhancement information (SEI) NAL unit type (PREFIX_SEI_NUT) or a suffix SEI NAL unit type (SUFFIX_SEI_NUT), a temporal identifier (TemporalId) of the non-VCL NAL unit is constrained to be equal to a TemporalId of an access unit (AU) containing the non-VCL NAL unit; If the value of the maximum picture width in luma samples (PicWidthMaxInSamplesY) of the current AU is different from the value of the PicWidthMaxInSamplesY of the preceding AU in decoding order, setting the value of the no output flag (NoOutputOfPriorPicsFlag) of the previous picture to 1; emptying a decoded picture buffer (DPB) without selecting any accommodated pictures for output when the value of NoOutputOfPriorPicsFlag is equal to 1; A method comprising:

11. 11. The method of claim 10, further comprising: setting the value of the NoOutputOfPriorPicsFlag to 1 if a value of a maximum picture height in luma samples (PicHeightMaxInSamplesY) of the current AU is different from a value of PicHeightMaxInSamplesY of the previous AU in decoding order.

12. 12. The method of claim 10 or 11, further comprising the step of decrementing, by the HRD, a DPB fullness variable for each picture removed when emptying the DPB.

13. The method according to any one of claims 10 to 12, further comprising: constructing a reference picture list and performing reference picture list marking for the current AU before setting the value of the NoOutputOfPriorPicsFlag by an HRD.

14. 14. The method of claim 10, wherein the DPB is emptied when a preceding picture is marked as unused for reference.

15. 15. A non-transitory computer-readable medium having stored thereon computer instructions that, when executed by at least one processor, cause the at least one processor to perform the method of any one of claims 10 to 14.

16. 1. An encoding device, comprising: one or more processors; one or more memories coupled to the one or more processors, the one or more memories storing instructions; 15. An encoding device, wherein the one or more processors are configured to execute the instructions to cause the encoding device to perform the method of any one of claims 10 to 14.

17. 1. A method for storing a bitstream, comprising: receiving, by a receiver of a decoder, one or more bitstreams; storing, by one or more processors of the decoder, the one or more bitstreams on one or more storage media; at least one of the one or more bitstreams includes one or more pictures in one or more video coding layer (VCL) network abstraction layer (NAL) units and non-VCL NAL units, and when a NAL unit type (nal_unit_type) of a non-VCL NAL is equal to a prefix supplemental enhancement information (SEI) NAL unit type (PREFIX_SEI_NUT) or a suffix SEI NAL unit type (SUFFIX_SEI_NUT), a temporal identifier (TemporalId) of the non-VCL NAL unit is constrained to be equal to the TemporalId of an access unit (AU) that contains the non-VCL NAL unit; The method comprises: If a value of a maximum picture width in luma samples (PicWidthMaxInSamplesY) of the current AU is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order, setting a value of a no output flag (NoOutputOfPriorPicsFlag) of the previous picture to 1 by the one or more processors; by the one or more processors, emptying a decoded picture buffer (DPB) without outputting any pictures contained therein when the value of NoOutputOfPriorPicsFlag is equal to 1; and decoding, by the one or more processors, one or more pictures from the VCL NAL units to generate one or more decoded pictures.

18. 1. A device for storing a bitstream, comprising: a decoder comprising a receiver, one or more memories, and one or more processors; the receiver is configured to receive one or more bitstreams; the one or more memories are configured to store the one or more bitstreams; at least one bitstream includes one or more pictures in one or more video coding layer (VCL) network abstraction layer (NAL) units and non-VCL NAL units, wherein when a NAL unit type (nal_unit_type) of a non-VCL NAL is equal to a prefix supplemental enhancement information (SEI) NAL unit type (PREFIX_SEI_NUT) or a suffix SEI NAL unit type (SUFFIX_SEI_NUT), a temporal identifier (TemporalId) of the non-VCL NAL unit is constrained to be equal to the TemporalId of an access unit (AU) that contains the non-VCL NAL unit; The one or more processors set a value of a no output flag (NoOutputOfPriorPicsFlag) of a previous picture to 1 when a value of a maximum picture width in luma samples (PicWidthMaxInSamplesY) of the current AU is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order; When the value of the NoOutputOfPriorPicsFlag is equal to 1, emptying the decoded picture buffer (DPB) without outputting the contained picture; A device configured to decode one or more pictures from the VCL NAL units to generate one or more decoded pictures.