Decoded picture buffer behavior for resolution change

By setting NoOutputOfPriorPicsFlag according to the maximum image height and width in the video encoding system, the problem of DPB overflow during layer changes is solved, especially when using ARC, effective DPB management is achieved, improving user experience and coding efficiency.

JP2025061709AActive Publication Date: 2025-04-11HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

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

AI Technical Summary

Technical Problem

In video encoding systems, the decoded image buffer (DPB) of the decoder is easily overflowed when the layer changes, resulting in a degradation of the user experience. Especially when using the adaptive resolution change (ARC) mechanism, NoOutputOfPriorPicsFlag does not work effectively, resulting in DPB overflow.

Method used

Set NoOutputOfPriorPicsFlag by checking the maximum image height and maximum image width instead of the specific height and width of the image. This method can still effectively prevent DPB overflow when using ARC, because the maximum image height and width are determined by the image characteristics of the ARC changing, and are not affected by the dynamic adjustment of ARC.

Benefits of technology

It effectively prevents DPB overflow, avoids the degradation of user experience due to layer changes, and improves the functional performance of encoder and decoder, increases encoding efficiency, and reduces the use of processor, memory and network signal resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025061709000001_ABST
    Figure 2025061709000001_ABST
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 Sep. 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 amount of video data required to represent even a relatively short video can be substantial, which 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 being transmitted over today's communication networks. The size of the video can also be an issue when the video is stored on a storage device, where memory resources may be scarce. Video compression devices often use software and / or hardware to code the 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 an 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 a 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, by the DPB, the current picture.

[0005] A video coding system may code a video sequence into multiple layers. Such layers may be extracted from an encoded bitstream and transmitted to a decoder to allow the decoder to display the video sequence using different characteristics as desired. For example, pictures 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 issue with this implementation is that the DPB at the decoder may overflow during a layer change, which may cause a degradation in the user experience. To address this issue, NoOutputOfPriorPicsFlag may be used. NoOutputOfPriorPicsFlag may be set to empty the DPB to make space for the new picture. This may occur even if the preceding picture in the DPB is specified for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a picture size change that is detected due to a change in width or height between successive pictures. Adaptive Resolution Change (ARC) is a mechanism to assist with resolution changes. ARC may 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. Use of ARC may cause NoOutputOfPriorPicsFlag to not work 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 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 picture height and width, the decoder can check for changes in maximum picture height and / or maximum picture width. The maximum picture height and maximum picture 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 resolution at layer changes. Thus, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating at the encoder when checking the encoded bitstream for standard conformance. As a result, the encoder and decoder functions are improved. Furthermore, coding efficiency can be increased, which reduces the use of processor, memory, and / or network signaling resources in both the encoder and the 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 of the current AU (PicHeightMaxInSamplesY) is different from the value of PicHeightMaxInSamplesY of the preceding AU in decoding order.

[0008] Optionally, in any of the above-mentioned 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 aspects, in another implementation of the aspect, further comprises decrementing a 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 a step of 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-mentioned 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 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: setting, by the processor, a value of NoOutputOfPriorPicsFlag if a value of PicWidthMaxInSamplesY of the current AU is different from the value of PicWidthMaxInSamplesY of a preceding AU in decoding order; emptying the DPB without selecting a accommodated picture 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 may code a video sequence into multiple layers. Such layers may be extracted from an encoded bitstream and transmitted to a decoder to allow the decoder to display the video sequence using different characteristics as desired. For example, pictures 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 issue with this implementation is that the DPB at the decoder may overflow during a layer change, which may cause a degradation in the user experience. To address this issue, NoOutputOfPriorPicsFlag may be used. NoOutputOfPriorPicsFlag may be set to empty the DPB to make space for the new picture. This may occur even if the preceding picture in the DPB is specified for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a picture size change that is detected due to a change in width or height between successive pictures. ARC is a mechanism to assist with resolution changes. ARC may 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. Use of ARC may cause NoOutputOfPriorPicsFlag to not work 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 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 picture height and width, the decoder can check for changes in maximum picture height and / or maximum picture width. The maximum picture height and maximum picture 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 resolution at layer changes. Thus, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating at the encoder when checking the encoded bitstream for standard conformance. As a result, the encoder and decoder functions are improved. Furthermore, coding efficiency can be increased, which reduces the use of processor, memory, and / or network signaling resources in both the encoder and the 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 when 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-mentioned 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, a DPB fullness variable for each picture that is removed when emptying the DPB.

[0020] Optionally, in any of the above 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-mentioned 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, causes the video coding device to perform a 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 a value of PicWidthMaxInSamplesY of a current AU is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order, emptying means for emptying the DPB without outputting any contained pictures 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 may code a video sequence into multiple layers. Such layers may be extracted from an encoded bitstream and transmitted to a decoder to allow the decoder to display the video sequence using different characteristics as desired. For example, pictures 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 issue with this implementation is that the DPB at the decoder may overflow during a layer change, which may cause a degradation in the user experience. To address this issue, NoOutputOfPriorPicsFlag may be used. NoOutputOfPriorPicsFlag may be set to empty the DPB to make space for the new picture. This may occur even if the preceding picture in the DPB is specified for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a picture size change that is detected due to a change in width or height between successive pictures. ARC is a mechanism to assist with resolution changes. ARC may 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. Use of ARC may cause NoOutputOfPriorPicsFlag to not work 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 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 picture height and width, the decoder can check for changes in maximum picture height and / or maximum picture width. The maximum picture height and maximum picture 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 resolution at layer changes. Thus, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating at the encoder when checking the encoded bitstream for standard conformance. As a result, the encoder and decoder functions are improved. Furthermore, coding efficiency can be increased, which reduces the use of processor, memory, and / or network signaling resources in both the encoder and the decoder.

[0027] Optionally, in any of the preceding aspects, another implementation of the aspect is provided, wherein the decoder is further configured to perform the method of any of the preceding 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 values ​​of PicWidthMaxInSamplesY of the current AU and the PicWidthMaxInSamplesY of the preceding AU are different in decoding order, emptying the DPB without selecting a accommodated picture 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 may code a video sequence into multiple layers. Such layers may be extracted from an encoded bitstream and transmitted to a decoder to allow the decoder to display the video sequence using different characteristics as desired. For example, pictures 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 issue with this implementation is that the DPB at the decoder may overflow during a layer change, which may cause a degradation in the user experience. To address this issue, NoOutputOfPriorPicsFlag may be used. NoOutputOfPriorPicsFlag may be set to empty the DPB to make space for the new picture. This may occur even if the preceding picture in the DPB is specified for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a picture size change that is detected due to a change in width or height between successive pictures. ARC is a mechanism to assist with resolution changes. ARC may 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. Use of ARC may cause NoOutputOfPriorPicsFlag to not work 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 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 picture height and width, the decoder can check for changes in maximum picture height and / or maximum picture width. The maximum picture height and maximum picture 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 resolution at layer changes. Thus, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating at the encoder when checking the encoded bitstream for standard conformance. As a result, the encoder and decoder functions are improved. Furthermore, coding efficiency can be increased, which reduces the use of processor, memory, and / or network signaling resources in both the encoder and the decoder.

[0031] Optionally, in any of the preceding aspects, another implementation of the aspect is provided, wherein the encoder is further configured to perform the method of any of the preceding 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 a contained picture if a value of PicWidthMaxInSamplesY of a current AU is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order; decoding, by a processor, the current picture; and storing, by the DPB, the current picture.

[0033] A video coding system may code a video sequence into multiple layers. Such layers may be extracted from an encoded bitstream and transmitted to a decoder to allow the decoder to display the video sequence using different characteristics as desired. For example, pictures 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 issue with this implementation is that the DPB at the decoder may overflow during a layer change, which may cause a degradation in the user experience. To address this issue, NoOutputOfPriorPicsFlag may be used. NoOutputOfPriorPicsFlag may be set to empty the DPB to make space for the new picture. This may occur even if the preceding picture in the DPB is specified for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a picture size change that is detected due to a change in width or height between successive pictures. ARC is a mechanism to assist with resolution changes. ARC may 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. Use of ARC may cause NoOutputOfPriorPicsFlag to not work 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 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 picture height and width, the decoder can check for changes in maximum picture height and / or maximum picture width. The maximum picture height and maximum picture 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 resolution at layer changes. Thus, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating at the encoder when checking the encoded bitstream for standard conformance. As a result, the encoder and decoder functions are improved. Furthermore, coding efficiency can be increased, which reduces the use of processor, memory, and / or network signaling resources in both the encoder and the 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-mentioned 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 aspects, in another implementation of the aspect, further comprises decrementing a 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-mentioned 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 the bitstream for conformance by an HRD operating in the processor, by emptying the DPB without outputting a 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 the processor, the current picture, and storing, by the DPB, the current picture; and storing, by a memory coupled to the processor, the bitstream for communication to a decoder.

[0042] A video coding system may code a video sequence into multiple layers. Such layers may be extracted from an encoded bitstream and transmitted to a decoder to allow the decoder to display the video sequence using different characteristics as desired. For example, pictures 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 issue with this implementation is that the DPB at the decoder may overflow during a layer change, which may cause a degradation in the user experience. To address this issue, NoOutputOfPriorPicsFlag may be used. NoOutputOfPriorPicsFlag may be set to empty the DPB to make space for the new picture. This may occur even if the preceding picture in the DPB is specified for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a picture size change that is detected due to a change in width or height between successive pictures. ARC is a mechanism to assist with resolution changes. ARC may 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. Use of ARC may cause NoOutputOfPriorPicsFlag to not work 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 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 picture height and width, the decoder can check for changes in maximum picture height and / or maximum picture width. The maximum picture height and maximum picture 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 resolution at layer changes. Thus, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating at the encoder when checking the encoded bitstream for standard conformance. As a result, the encoder and decoder functions are improved. Furthermore, coding efficiency can be increased, which reduces the use of processor, memory, and / or network signaling resources in both the encoder and the 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-mentioned 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 aspects, in another implementation of the aspect, further comprises decrementing a 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-mentioned 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 fuller 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 description of the drawings]

[0053] [Figure 1] 4 is a flowchart of an exemplary method for coding a video signal. [Diagram 2] 1 is a schematic diagram of an example coding and decoding (codec) system for video coding. [Diagram 3] FIG. 1 is a schematic diagram illustrating an exemplary video encoder. [Figure 4] FIG. 2 is a schematic diagram illustrating an exemplary video decoder. [Diagram 5] 1 is a schematic diagram illustrating an exemplary hypothetical reference decoder (HRD). [Figure 6] FIG. 2 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 use of a NoOutputOfPriorPicsFlag in conjunction with Adaptive Resolution Change (ARC). [Figure 10] 1 is a flowchart of an example 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 PREFERRED EMBODIMENTS

[0054] First, 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 shown 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 in the present specification 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 as supplementary and should not be considered as limiting other definitions of the descriptions given to such terms in the present specification.

[0056] A bitstream is a sequence of bits that includes 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 the bitstream for display. A picture is an array of luma samples and / or an array of 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 a left border of a picture and a right border of a picture, measured in luma samples. A picture height is the vertical distance between a top border of a picture and a bottom border of a 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 of explanation, the picture being encoded or decoded can 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 an access unit (AU) 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 that is generated by applying a 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). A current AU is an AU that corresponds to a particular output time in the decoding process and / or HRD conformance checking process. A previous AU is an AU that occurs before (e.g., immediately before) the current AU in the 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 interspersed as desired with emulation prevention bytes. A VCL NAL unit is a NAL unit that is 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 the video data, performing conformance checking, 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 a reference status 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 used as a reference picture for further decoded pictures. The NoOutputOfPriorPicsFlag is a derived variable that specifies when to empty the DPB without outputting the 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 that checks the variability of the bitstream produced by the encoding process to verify conformance with specified constraints. A bitstream conformance test is a test that determines whether the encoded bitstream conforms to a standard, such as Versatile Video Coding (VVC). A picture parameter set (PPS) is a syntax structure that contains 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 that contains syntax elements that apply to all slices of the coded picture. A slice header is a part of a coded slice that contains data elements for the entire tile, or the 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] In this specification, the following acronyms are used: 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), Virtual 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 can 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 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 predictive (P) or bidirectionally predictive (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. The residual data represents the pixel difference between the original image block and the prediction block. Thus, an inter-coded block is encoded according to a motion vector that points to a block of reference samples that form the prediction block, and the residual data that indicates the difference between the coded block and the prediction block. An intra-coded block is encoded according to an intra-coded mode and the residual data. For further compression, the residual data may be transformed from the pixel domain to a transform domain. These become residual transform coefficients, which 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] The video is encoded and decoded according to a corresponding video coding standard so that the encoded video can be accurately decoded. The video coding standards include 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, Advanced Video Coding (AVC), also known as ITU-T H.262 or ISO / IEC MPEG-2 Part 2, ITU-T H.263, ISO / IEC MPEG-4 Part 2, ITU-T H.264 or ISO / IEC MPEG-4 Part 10, and High Efficiency Video Coding (HEVC), also known as ITU-T H.265 or MPEG-H Part 2. AVC includes extensions such as Scalable Video Coding (SVC), Multiview Video Coding (MVC), 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 may code a video sequence into multiple layers. Such layers may be extracted from an encoded bitstream and transmitted to a decoder to allow the decoder to display the video sequence using different characteristics as desired. For example, pictures 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 issue with this implementation is that the decoded picture buffer (DPB) at the decoder may overflow during a layer change, which may cause a degradation of the user experience. To address this issue, a no output flag (NoOutputOfPriorPicsFlag) for the previous picture may be used. NoOutputOfPriorPicsFlag may be set to empty the DPB to make space for the new picture. This may occur even if the preceding picture in the DPB is specified for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a picture size change detected due to a change in the picture width or height. Adaptive Resolution Change (ARC) is a mechanism to assist with 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 cause the NoOutputOfPriorPicsFlag to not work 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.

[0064] Disclosed herein is a mechanism for enabling NoOutputOfPriorPicsFlag when ARC is used. For example, instead of checking picture height and width, the decoder can check the change in maximum picture height and maximum picture width. The maximum picture height and maximum picture width are not changed by ARC. This allows NoOutputOfPriorPicsFlag to be set appropriately to prevent DPB overflow due to spatial resolution change even when ARC is used to match the resolution at layer change. Thus, various errors can be avoided. A similar process can also be used by a hypothetical reference decoder (HRD) operating at the encoder when checking the encoded bitstream for standard conformance. As a result, the encoder and decoder functions are improved. Furthermore, coding efficiency can be increased, which reduces the use of processor, memory, and / or network signaling resources in both the encoder and the decoder.

[0065] 1 is a flow chart 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 an end user. To allow the decoder to recover the video signal consistently, 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 audio and video components. 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 may 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 may be used to divide the CTUs into blocks, which may then be recursively subdivided until a configuration is achieved that supports further encoding. For example, the luma component of a frame may be subdivided until each individual block contains a relatively uniform illumination value. Additionally, the chroma component of a frame may be subdivided until each individual block contains a relatively uniform color value. Thus, the partitioning mechanism differs 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 is intended to take advantage of the fact that objects in a typical scene tend to appear in successive frames. Thus, a block representing an object in a reference frame does not need to be repeatedly described in adjacent frames. In particular, an object such as a desk may remain in a fixed position across multiple frames. Therefore, the desk may be described once and adjacent frames may refer to the reference frame. A pattern matching mechanism may be used to match objects across multiple frames. Furthermore, an object may be represented 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 may 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 an image block in a current frame as a set of motion vectors indicating an offset from a corresponding block in a reference frame.

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

[0070] In step 107, various filtering techniques may be applied. In HEVC, filters are applied according to an in-loop filtering scheme. The block-based prediction described above may result in the creation of blocky images at the decoder. Furthermore, block-based prediction schemes may encode blocks and reconstruct the encoded blocks for later use as reference blocks. In-loop filtering schemes apply noise suppression filters, deblocking filters, adaptive loop filters, and sample adaptive offset (SAO) filters iteratively 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 so that subsequent blocks that are encoded based on the reconstructed reference blocks are less likely to introduce further artifacts.

[0071] Once the video signal has been segmented, compressed, and filtered, the resulting data is encoded in a bitstream at step 109. The bitstream includes the data described above, as well as 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. The generation of 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 converts the bitstream into corresponding syntax data and video data using an entropy decoding scheme. The decoder uses the syntax data from the bitstream to determine the frame partition in step 111. The partition must match the result of the block partitioning in step 103. This will now describe the entropy encoding / decoding used in step 111. The encoder makes a number of choices during the compression process, such as choosing a block partitioning scheme from several options based on the spatial arrangement of values ​​in the input image. A number of bins can be used to signal the exact choice. A bin, as used here, is a binary value (e.g., a bit value that can change depending on the situation) that is treated as a variable. Entropy coding allows the encoder to discard options that are clearly not valid 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, as it is desirable if the codeword uniquely indicates a choice from a small subset of acceptable options, as opposed to a large set of all possible options. The decoder then decodes the selection by determining the set of acceptable options in the same way as the encoder. The decoder can read the codeword and determine the selection made by the encoder by determining the set of acceptable options.

[0073] In step 113, the decoder performs block decoding. Specifically, the decoder uses an inverse transform to generate a residual block. 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. Then, the reconstructed image block may be 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 by the above-mentioned entropy coding.

[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 are filtered, in step 117 the video signal may be output to a display for viewing by an end user.

[0075] FIG. 2 is a schematic diagram of an exemplary coding and decoding (codec) system 200 for video coding. Specifically, the codec system 200 provides functionality supporting the implementation of the operational method 100. The codec system 200 is generalized to show components used in both an encoder and a decoder. The codec system 200 receives and segments a video signal as described with respect to steps 101 and 103 of the operational method 100, resulting in a segmented video signal 201. The codec system 200 then compresses the segmented video signal 201 into a coded bitstream when functioning as an encoder as described with respect to steps 105, 107, and 109 of the method 100. When functioning as a decoder, the codec system 200 generates an output video signal from the bitstream as described with respect to steps 111, 113, 115, and 117 of the operational method 100. Codec system 200 includes a general coder control component 211, a transform scaling and quantization component 213, an intra-picture estimation component 215, an intra-picture prediction component 217, a motion compensation component 219, a motion estimation component 221, a scaling and inverse transform component 229, a filter control analysis component 227, an in-loop filter component 225, a decoded picture buffer component 223, and a header formatting and context-adaptive binary arithmetic coding (CABAC) component 231. Such components are coupled as shown. In FIG. 2, the black lines indicate the movement of data to be encoded / decoded, and the dashed lines indicate the movement of control data that controls the operation of the other components. Any of the components of codec system 200 may be present in an encoder. A decoder may include a subset of the components of codec system 200. For example, the decoder may include an intra-picture prediction component 217, a motion compensation component 219, a scaling and inverse transform component 229, an in-loop filter component 225, and a decoded picture buffer component 223. These components will now be 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 may be referred to as nodes on the coding tree. Large parent nodes are partitioned into smaller child nodes. The number of times a node is subdivided is referred to as the depth of the node / coding tree. Partitioned blocks may be included in some cases in coding units (CUs). For example, a CU may be a sub-part of a CTU that includes a luma block, a red-difference chroma (Cr) block(s), and a blue-difference chroma (Cb) block(s), along with a corresponding CU syntax instruction. 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 of different shapes, 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 the video sequence into a bitstream according to application constraints. For example, the general coder control component 211 manages the optimization of bitrate / bitstream size and 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 the buffer usage in view of the transmission rate to mitigate buffer under-run and over-run problems. To manage these problems, the general coder control component 211 manages the segmentation, prediction and filtering by the other components. For example, the general coder control component 211 can dynamically increase the compression complexity to increase the resolution and bandwidth usage, or decrease the compression complexity to decrease the resolution and bandwidth usage. Thus, the general coder control component 211 balances the reconstruction quality and bitrate problems of the video signal by controlling the other components of the codec system 200. The general coder control component 211 generates control data that controls the operation of the other components. The control data is also forwarded to the header formatting and CABAC component 231 for encoding in the bitstream to signal parameters for decoding at the decoder.

[0078] The partitioned video signal 201 is also sent to a motion estimation component 221 and a motion compensation component 219 for inter prediction. A frame or slice of the partitioned video signal 201 may be divided into multiple video blocks. The motion estimation component 221 and the motion compensation component 219 perform inter predictive coding of the received video blocks with respect 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 a video block. A motion vector may indicate, for example, the movement of a coded object relative to a predictive block. A predictive block is a block that is known to closely match a block to be coded in terms of pixel differences. A predictive block may also be referred to as a reference block. Such pixel differences may be determined by sum of absolute differences (SAD), sum of squared differences (SSD), or other difference 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 a CU. A CU may be encoded as a prediction unit that includes prediction data and / or as a transform unit (TU) that includes 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, the motion estimation component 221 can determine multiple reference blocks, multiple motion vectors, etc. for a current block / frame, and can 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 locations of the reference picture stored in the decoded picture buffer component 223. For example, the video codec system 200 can interpolate values ​​for quarter-pixel locations, eighth-pixel locations, or other fractional pixel locations of the reference picture. Thus, the motion estimation component 221 can perform motion searches relative to whole-pixel and fractional pixel locations 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 location of the prediction unit with the location of the prediction block of the reference picture. 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 may 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 may 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 to be 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. As with the motion estimation component 221 and the motion compensation component 219, the intra picture estimation component 215 and the intra picture prediction component 217 may be highly integrated, but are shown separately for conceptual purposes. The intra picture estimation component 215 and the intra picture prediction component 217 intra predict a current block with reference to blocks in a 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 an intra prediction mode to use for encoding the current block. In some examples, the intra picture estimation component 215 selects an appropriate intra prediction mode to encode the current block from a plurality of tested intra 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 a rate-distortion analysis to calculate rate-distortion values ​​for various tested intra prediction modes and select an intra prediction mode with the best rate-distortion characteristics from among the tested modes. The 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, and the bit rate (e.g., number of bits) used to generate the encoded block. The intra picture estimation component 215 may calculate a ratio from the distortion and rate of the various encoded blocks to determine which intra prediction mode exhibits the best rate-distortion value for the block. In addition, 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 if implemented in an encoder, or read the residual block from the bitstream if implemented in a decoder. The residual block contains the difference in values ​​between the prediction block and the original block, represented as a matrix. The residual block is then forwarded to the transform scaling and quantization component 213. The intra-picture estimation component 215 and the intra-picture prediction component 217 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 including residual transform coefficient values. A wavelet transform, an integer transform, a subband transform, or other types of transforms may also be used. The transform may convert the residual information from a pixel value domain to a transform domain, such as a 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 causes different frequency information to be quantized with different granularity, which may affect the final visual quality of the reconstructed video. The transform scaling and quantization component 213 is also configured to quantize the transform coefficients to further reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be 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 the residual block in the pixel domain for later use as a reference block that can become a prediction block for another current block, for example. The motion estimation component 221 and / or the motion compensation component 219 can compute a reference block by adding the residual block to a corresponding prediction block used in motion estimation of a later block / frame. To reduce artifacts introduced during scaling, quantization, and transformation, a filter is applied to the reconstructed reference block; such artifacts could otherwise cause 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 the residual blocks and / or to the reconstructed image blocks. For example, the transformed residual blocks from the scaling and inverse transform component 229 can be combined with the corresponding prediction blocks from the intra-picture prediction component 217 and / or the motion compensation component 219 to reconstruct the original image block. The filters can then be applied to the reconstructed image block. In some examples, the filters can be applied to the residual blocks instead. As with the other components of FIG. 2, the filter control analysis component 227 and the in-loop filter component 225 may be highly integrated and executed together, but are depicted separately for conceptual purposes. The filters applied to the 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, a 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 predictive 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 predictive 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. In particular, the header formatting and CABAC component 231 generates various headers for encoding control data, such as general control data and filter control data. Additionally, prediction data, including intra prediction and motion data, and residual data in the form of quantized transform coefficient data are both encoded in the bitstream. The final bitstream contains all the information required by the decoder to recover the original partitioned 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 probable intra prediction modes, indications of partition information, and the like. 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), Probabilistic Interval Partitioning Entropy (PIPE) coding, or other entropy coding techniques. After entropy coding, the coded bitstream may be transmitted to another device (e.g., a video decoder) or may be stored for later transmission or retrieval.

[0090] 3 is a block diagram illustrating an example video encoder 300. The video encoder 300 may be used to implement the encoding functionality of the codec system 200 and / or to perform steps 101, 103, 105, 107, and / or 109 of the method of operation 100. The encoder 300 segments an input video signal, such that the resulting segmented video signal 301 is substantially similar to the segmented video signal 201. The segmented video signal 301 is then compressed and encoded into a bitstream by components of the 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 a reference block in a decoded picture buffer component 323. The motion compensation component 321 may be substantially similar to the motion estimation component 221 and the motion compensation component 219. The prediction block and the residual block from the intra-picture prediction component 317 and the motion compensation component 321 are forwarded to a transform and quantization component 313 for 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 example video decoder 400. The video decoder 400 may be used to implement the decoding functionality of the codec system 200 and / or to perform steps 111, 113, 115, and / or 117 of the method of operation 100. The decoder 400 receives a bitstream, for example from the 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 an entropy decoding component 433. The entropy decoding component 433 is configured to implement an entropy decoding scheme, such as CAVLC, CABAC, SBAC, PIPE coding, or other entropy coding techniques. For example, the entropy decoding component 433 can use header information to provide a context for interpreting additional data encoded as codewords in the bitstream. The decoded information includes information desired 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 an 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 in 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, the residual block, and / or the 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 uses a motion vector from a reference block to generate a prediction block, and applies a residual block to the result to reconstruct the image block. The reconstructed block may also be transferred to the decoded picture buffer component 423 via the in-loop filter component 425. The decoded picture buffer component 423 continues to store further reconstructed image blocks, which may be reconstructed into frames according to the partition information. Such frames may also be arranged in a sequence. The 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 the codec system 200 and / or an encoder, such as the encoder 300. The HRD 500 may inspect the bitstream generated in step 109 of the method 100 before the bitstream is forwarded to a decoder, such as the decoder 400. In some examples, once the bitstream is encoded, the bitstream may be forwarded continuously through the HRD 500. If a portion of the bitstream does not conform to an associated constraint, the HRD 500 may indicate such 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 execute a virtual distribution mechanism. The virtual distribution mechanism is used to check the conformance of a bitstream or a decoder with respect to the timing and data flow of the bitstream 551 input to the HRD 500. For example, the HSS 541 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 a decoding unit (DU) 553. The 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 and a picture per layer in a multi-layer bitstream. Each picture in an AU may be divided into slices that are each included in a corresponding VCL NAL unit. Thus, the DU 553 may include one or more pictures, one or more slices of a picture, or a combination thereof. Also, parameters used to decode the AU, the picture, and / or the slice may be included in the non-VCL NAL unit. Thus, the DU 553 contains non-VCL NAL units that contain data necessary to support decoding of the VCL NAL units in the DU 553. The CPB 543 is a first-in, first-out buffer for the HRD 500. The CPB 543 contains the DUs 553 that contain video data in decoding order. The CPB 543 stores video data for use during bitstream conformance validation.

[0099] The CPB 543 transfers the DU 553 to a decoding process component 545. The decoding process component 545 is a component that complies with 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 is not standard-compliant 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 the 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 that the encoding is good.

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

[0103] Video may be coded into different layers and / or OLSs for use by decoders with various levels of hardware capabilities and for various network conditions. The CPB delivery schedule is selected to reflect these issues. Thus, the upper layer sub-bitstreams are designated for optimal hardware and network conditions, and thus the upper layers may receive one or more CPB delivery schedules that use a large amount of memory in the CPB 543 and a short delay for the transfer of the DUs 553 towards the DPB 547. Similarly, the lower layer sub-bitstreams are designated for limited decoder hardware capabilities and / or poor network conditions. Thus, the lower layers may receive one or more CPB delivery schedules that use a small amount of memory in the CPB 543 and a longer delay for the transfer of the DUs 553 towards the DPB 547. The OLSs, layers, sub-layers, or combinations thereof may then be tested according to the corresponding delivery schedules to ensure that the resulting sub-bitstreams can be 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 may include sufficient data to enable the HRD 500 to determine the CPB delivery schedule and correlate the CPB delivery schedule to a corresponding OLS, layer, and / or sublayer.

[0104] 6 is a schematic diagram illustrating an example multi-layer video sequence 600. The multi-layer video sequence 600 may be encoded by an encoder, such as the codec system 200 and / or the encoder 300, and decoded by a decoder, such as the codec system 200 and / or the decoder 400, according to, for example, the method 100. Additionally, the multi-layer video sequence 600 may be checked for standard conformance by an HRD, such as the HRD 500. The multi-layer video sequence 600 is included to illustrate an example application of layers in 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. A layer, such as layer N 631 and / or layer N+1 632, is a group of pictures that are all associated with similar values ​​of 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 the 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 size (e.g., larger height and width, and therefore more samples) of pictures 611, 612, 613, 614 of layer N+1 632 is larger than the picture size of pictures 615, 616, 617, 618 of 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 and indicates that the picture is part of the indicated layer. Thus, each picture 611-618 may be associated with a corresponding layer ID to indicate which layer N+1 632 or layer N 631 contains the corresponding picture. For example, the layer ID may include a NAL unit header layer identifier (nuh_layer_id), which is a syntax element that specifies an identifier of a layer that contains a NAL unit (e.g., containing slices and / or parameters of a picture in a layer). A layer associated with lower quality / smaller image size / smaller bitstream size, such as layer N 631, is generally assigned a lower layer ID and is referred to as a lower layer. Furthermore, a layer associated with higher quality / larger image size / larger bitstream size, such as layer N+1 632, is generally assigned a higher layer ID and is referred to as a higher layer.

[0107] The pictures 611-618 in the different layers 631-632 are configured to be displayed in alternative manners. As a specific example, the 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 the upper layer N+1 632 contain substantially the same image data as corresponding pictures 615-618 in the 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 by using inter prediction 623 using one or two of pictures 611, 612 and / or 614 in layer N+1 632 as references, one picture being referenced for unidirectional inter prediction and / or two pictures being referenced for bidirectional inter prediction. Furthermore, picture 617 may be coded by using inter prediction 623 using one or two of pictures 615, 616 and / or 618 in layer N 631 as references, one picture being referenced for unidirectional inter prediction and / or two pictures being referenced for bidirectional inter prediction. When performing inter prediction 623, a picture may be referred to as 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 referred to as 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 interlayer prediction 621 and is indicated by dashed arrows. Interlayer 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 interlayer prediction 621. In such a case, picture 615 is used as an interlayer reference picture. An interlayer reference picture is a reference picture used for interlayer prediction 621. In most cases, interlayer prediction 621 is constrained such that a current picture, such as picture 611, can only use interlayer 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 may encode / decode the current picture based on multiple inter-layer reference pictures that are at a lower level than the current picture.

[0110] A video encoder may use the multi-layer video sequence 600 to encode pictures 611-618 via many different combinations and / or permutations of inter-prediction 623 and inter-layer prediction 621. For example, picture 615 may be coded according to intra-prediction. Pictures 616-618 may then be coded according to inter-prediction 623 by using picture 615 as a reference picture. Furthermore, picture 611 may be coded according to inter-layer prediction 621 by using picture 615 as an inter-layer reference picture. Pictures 612-614 may then be coded according to inter-prediction 623 by using picture 611 as a reference picture. Thus, a reference picture may function as both a single layer reference picture and an inter-layer reference picture for different coding mechanisms. By coding pictures of the upper layer N+1 631 based on pictures of 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 thus limited to coding a minimum amount of video data. Pictures used as reference pictures and / or inter-layer reference pictures may be indicated in entries of a reference picture list included in a reference picture list structure.

[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 description 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 particular output time in the decoding process and / or the HRD conformance checking 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 an immediately previous AU in decoding order to the current AU 628.

[0112] Coded pictures in the same AU are scheduled to be output from the DPB at the same time in the decoder. 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 small picture size is desired, and picture 613 may be displayed if a large picture size is desired. If a large 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, in the case of 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 associated with each other according to a specified classification rule, 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 HRD and / or related conformance tests.

[0114] 7 is a schematic diagram illustrating an example 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 compliance with a standard before sending it to the decoder for decoding.

[0115] The bitstream 700 includes a VPS 711, one or more SPSs 713, a number of picture parameter sets (PPS) 715, a number of adaptation parameter sets (APS) 716, a number of picture headers 718, a number of slice headers 717, image data 720, and an SEI message 719. The VPS 711 includes data related to the entire bitstream 700. For example, the VPS 711 may include data related OLS, layers, and / or sublayers used in the bitstream 700. The SPS 713 includes sequence data common to all pictures in a coded video sequence included in the bitstream 700. For example, each layer may include one or more coded video sequences, and each coded video sequence may reference the SPS 713 for corresponding parameters. The parameters in the SPS 713 may include picture 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 while in some examples, 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 a case, a single PPS 715 may contain data for such similar pictures. The PPS 715 can 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 be applied to at least one but less than all slices 727 in a first picture 721, at least one but less than all slices 727 in a second picture 725, etc. An APS 716 can be separated into multiple types based on parameters included in the APS 716. Such types can 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 arise as a result of block-based coding, such as blurring and ringing artifacts. Thus, the ALF parameters included in the ALF APS may include parameters selected by the encoder to cause the ALF to remove block-based coding artifacts during decoding at the decoder. The LMCS is a process applied as part of the decoding process that maps luma samples to specific values ​​and possibly applies a scaling operation to the values ​​of chroma samples. The LMCS tool may 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 the 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 at the HRD and / or upon decoding at the decoder.

[0117] The picture header 718 is a syntax structure that includes syntax elements that apply to all slices 727 of the 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 for each 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 the video sequence. The slice header 717 may include slice type information, filtering information, prediction weights, tile entry points, deblocking parameters, etc. In some cases, the syntax elements may be the same for all slices 727 in the picture 725. To reduce redundancy, the picture header 718 and the slice header 717 may share certain types of information. For example, a particular parameter (e.g., a filtering parameter) may be included in the picture header 718 if it applies to the entire picture 725, and may be included in the slice header 717 if it applies to a group of slices 727 that are a subset of the entire picture 725.

[0118] Image data 720 includes video data encoded according to inter prediction and / or intra prediction, as well as corresponding transformed and quantized residual data. For example, image data 720 may include layers 723, pictures 725, and / or slices 727. Layers 723 are a set of VCL NAL units and associated non-VCL NAL units that share specified characteristics (e.g., a common resolution, frame rate, image size, etc.) as indicated by a layer ID such as nuh_layer_id. For example, layer 723 may include a set of pictures 725 that share the same nuh_layer_id. Layer 723 may be substantially similar to layers 631 and / or 632. nuh_layer_id is a syntax element that specifies an identifier of layer 723 that includes at least one NAL unit. For example, the lowest quality layer 723, known as a 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 the smaller value of nuh_layer_id, and the higher layer is the layer 723 with the larger value of nuh_layer_id.

[0119] A picture 725 is an array of luma samples and / or an array of chroma samples that generate a frame or a field thereof. For example, a picture 725 is a coded image that may be output for display or used to support coding of other pictures 725 for output. A picture 725 includes one or more slices 727. A slice 727 may be defined as an integer number of complete tiles of a picture 725 that are exclusively contained 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 predefined size that can be partitioned in a coding tree. A CTB is a subset of a CTU and includes the luma or chroma components 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 the decoding of the bitstream 700 at the decoder.

[0121] Various parameters are signaled in the bitstream 700 to support decoding of the 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 width maximum in luma samples (sps_pic_width_max_in_luma_samples) 731 and an SPS picture height maximum in luma samples (sps_pic_height_max_in_luma_samples) 732. 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. 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 the SPS 713.

[0122] As mentioned above, the encoder can transmit various layers 723 of a picture 725 to the decoder depending on the conditions at the decoder. Furthermore, the transmitted layers 723 can change as the conditions at the decoder change. For example, the picture 725 can be transmitted at a higher resolution / larger size when the network conditions are optimal and at a lower resolution / smaller size when the network conditions deteriorate. One problem with this implementation is that the DPB at the decoder can overflow during the change of the layer 723, which can cause a degradation of the user experience. For example, the DPB may be filled with the 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, which can result in errors and prevent proper decoding and display of the high resolution picture 725.

[0123] To address this issue, a no output flag for the previous picture (NoOutputOfPriorPicsFlag) can be used. NoOutputOfPriorPicsFlag is a variable derived in the decoder during conformance testing and / or derived in 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 happen even if a previous picture 725 in the DPB is specified for output. In some video coding systems, NoOutputOfPriorPicsFlag is set based on a detected size change 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. In general, 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 the DPB to match the resolution of the subsequent picture 725. Thus, a reference picture 725 in the 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 needing an intervening IRAP picture. A problem with ARC is that it can prevent 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 properly. Therefore, ARC can result in DPB overflow by effectively disabling the use of NoOutputOfPriorPicsFlag.

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

[0126] In one specific example, the decoder may use 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 the AU (containing the current picture 725) and the value of PicWidthMaxInSamplesY for the previous AU (containing the previous picture 725) differ in decoding order. In another example, NoOutputOfPriorPicsFlag may be set if the value of PicHeightMaxInSamplesY for the AU (containing the current picture 725) differs in decoding order from the value of PicHeightMaxInSamplesY for the previous AU (containing the previous picture 725).

[0128] When NoOutputOfPriorPicsFlag is set, the DPB may be emptied as necessary to prevent DPB overflow. For example, the DPB may 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 AUs 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 built for the slice 727, and a reference picture list marking process may be performed before setting NoOutputOfPriorPicsFlag. The reference picture list building 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 building process. In a particular example, the DPB is emptied when 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 a reference picture. Additionally, the DPB may employ a DPB fullness variable, which is a data element indicating 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] By using the examples described herein, NoOutputOfPriorPicsFlag can be set to empty the DPB as necessary to prevent DPB overflow. Thus, the embodiments contained herein can be employed to avoid various decoding errors associated with switching between layers 723. A similar process can be used by the HRD operating at the encoder when checking the encoded bitstream for standards conformance. This process can prevent the HRD from having a DPB overflow when checking layers 723 for conformance, thus reducing the occurrence of conformance test failures during encoding. As a result, the functionality of the encoder and decoder is improved. Furthermore, coding efficiency can be increased, which reduces the use of processor, memory, and / or network signaling resources in both the encoder and decoder.

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

[0132] Some video coding families provide support for scalability in profiles separated from profiles for single-layer coding. Scalable Video Coding (SVC) is a scalable extension of Advanced Video Coding (AVC) that 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 a collocated block from the lower layer. Predictions from collocated blocks may 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 differs 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 may 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 a reference index 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 the reference index to refer to an inter-layer reference picture in the reference picture list. Spatial scalability resamples a reference picture or a part of it when the ILRP has a different spatial resolution than the current picture being encoded or decoded. Reference picture resampling 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. The layers may all be independent of each other. For example, each layer may be coded without inter-layer prediction. In this case, each layer is also called a co-cast layer. In some cases, some of the layers are coded using ILP. A flag in the VPS can indicate whether the layers are co-cast layers 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 of layers are specified to be output layers. An output layer is a layer of the OLS that is output. In some implementations of VVC, 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 particular layer is specified to be an output layer. The output layer may be designated as just the top layer, 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. In addition, 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 may not 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 resolved as follows: The nuh_layer_id values ​​of the SPS, PPS, and APS NAL units are appropriately constrained herein. The TemporalId values ​​of the SEI NAL units are appropriately constrained herein. The setting of NoOutputOfPriorPicsFlag is appropriately specified when reference picture resampling is enabled and pictures in the CLVS have different spatial resolutions. A suffix SEI message may be included in a scalable nesting SEI message. The parsing dependency of BP, PT, and DUI SEI messages on the 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 from IDR_W_RADL to RSV_IRAP_13 (inclusive), TemporalId shall be equal to 0. When nal_unit_type is equal to STSA_NUT, TemporalId shall 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 of 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 of 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 that contains an SPS may be constrained to have a nuh_layer_id equal to the lowest nuh_layer_id value of a 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 can be 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 that contains 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 the 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 the APS NAL unit must be equal to the nuh_layer_id of the slice that references the APS.

[0145] In one example, removal of a picture from the DPB before decoding of the current picture is described as follows: Removal of a picture from the DPB before decoding of the current picture (but after parsing the slice header of the first slice of the current picture) may be performed 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 called, and a decoding process for reference picture marking is called.

[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, 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 value of NoOutputOfPriorPicsFlag for the decoder under test is applied to the HRD, so that when the value of NoOutputOfPriorPicsFlag is equal to 1, all picture storage buffers in the DPB are emptied without output of the pictures they contain, and the DPB fullness is set to zero. If both of the following conditions apply for any picture k in the DPB, then 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, the DPB fullness is decremented by 1.

[0148] In one example, the output and removal of a picture from the DPB is described as follows: The output and removal of a picture from the DPB before the decoding of the current picture (but after parsing the slice header of the first slice of the current picture) may be performed 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 ordered steps are 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, 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, 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.

[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 marked as not needed for output and 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, the DPB fullness is decremented by one. When one or more of the following conditions are true, the bumping process is repeatedly called with further decrementing of the DPB fullness by one 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 there is at least one picture in the DPB marked as needed for output with sps_max_latency_increase_plus1[Htid] not equal to 0 and the associated variable PicLatencyCount is greater than or equal to SpsMaxLatencyPictures[Htid]. Another condition is that the number of pictures in the DPB is greater than or equal to 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 below.

[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 not in the context of an OLS. A scalable nesting SEI message contains one or more SEI messages. An SEI message contained in a scalable nesting SEI message is also called a scalably nested SEI message. Bitstream conformance MAY require that the following restrictions apply when an SEI message is included in a scalable nesting SEI message:

[0157] A scalable nesting SEI message SHOULD NOT contain an SEI message with payloadType of 132 (decoded picture hash) or 133 (scalable nesting). If a scalable nesting SEI message contains a buffering period, picture timing, or decoding unit information SEI message, the scalable nesting SEI message SHOULD NOT contain any other SEI message with payloadType other than 0 (buffering period), 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 an SEI NAL unit that contains a scalable nesting SEI message: 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 set equal to PREFIX_SEI_NUT. If the scalable nesting SEI message contains an SEI message with payloadType (decoded picture hash) equal to 132, 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 any 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. When the scalable nesting SEI message contains any 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 may 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, if 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 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 0 to NumLayersInOls[nestingOlsIdx[i]]-2, inclusive.

[0164] The variable NestingOlsLayerIdx[i][j] may 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 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 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] When 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 from 0 to NestingNumLayers-1, which specifies a list of nuh_layer_id values ​​of 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 MUST be in the range 0 to 63 inclusive. nesting_0_bit SHALL 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 a 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 a 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 the 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 communicating data to and from a user. The I / O devices 860 may include output devices such as a display for displaying video data, speakers for outputting audio data, etc. The I / O devices 860 may also include input devices such as a keyboard, mouse, trackball, etc., and / or corresponding interfaces for interacting with such output devices.

[0170] The processor 830 is implemented by 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 downstream ports 820, Tx / Rx 810, upstream ports 850, and 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, the coding module 814 may be used to signal and / or read various parameters as described herein. Furthermore, the coding module may be used to encode and / or decode a video sequence based on such parameters. Thus, the signaling modifications described herein may increase efficiency and / or avoid errors in the coding module 814. Thus, the coding module 814 may be configured to implement mechanisms to address one or more of the problems discussed above. Thus, the coding module 814 provides the video coding device 800 with additional functionality and / or coding efficiency when coding video data. In this manner, the coding module 814 improves the functionality of the video coding device 800 while addressing problems inherent to video coding techniques. Furthermore, the coding module 814 achieves transformation of the video coding device 800 to a different state.Alternatively, the coding module 814 may be embodied 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 an overflow data storage device 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 of 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. Additionally, method 900 may operate on HRD 500 and thus perform conformance testing on multi-layer video sequence 600.

[0173] The method 900 may start when an encoder receives a video sequence and decides, for example based on user input, to encode the video sequence into a multi-layer bitstream. In step 901, the encoder encodes a number of pictures into a 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 including a picture into a multi-layer bitstream. A layer may include a set of VCL NAL units having the same layer ID and associated non-VCL NAL units. A layer may include a set of VCL NAL units including 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 an output layer, but such support layers are not intended for output at a decoder. In this manner, the encoder may encode various combinations of layers for transmission to a decoder upon request. Layers 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 can 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 can 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 build 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 the preceding picture) 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 is different from the value of PicWidthMaxInSamplesY of the previous picture in the previous 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 is different from the value of PicHeightMaxInSamplesY of the previous picture in the previous 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 thus, 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 may decode the current picture in the current AU and store the current picture in the DPB in step 911. Thus, the DPB is emptied in step 909 before the current picture in the current AU is decoded in step 911. Furthermore, the DPB is emptied in step 909 after parsing the slice header of the first slice of the current picture in step 905.

[0179] In some cases, 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 completed. Assuming the conformance test is successful, the bitstream is stored in long-term memory for communication towards the decoder in step 913, e.g., via a content server. The layers of the bitstream can then be transmitted towards the decoder upon request.

[0180] 10 is a flow chart 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. Additionally, 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 a plurality of 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 the set of VCL NAL units all have the same layer ID. A layer may include a set of VCL NAL units including video data of a picture and any parameter set 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 supporting 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 preferences.

[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 a user input and / or due to a change in operating conditions. For example, the decoder may request to switch 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 build a reference picture list of 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 the preceding picture) 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 is different from the value of PicWidthMaxInSamplesY of the previous picture in the previous AU in decoding order. PicWidthMaxInSamplesY may be derived based on sps_pic_width_max_in_luma_samples 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 is different from the value of PicHeightMaxInSamplesY of the previous picture in the previous AU in decoding order. PicHeightMaxInSamplesY may be derived based on sps_pic_height_max_in_luma_samples 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 pictures included 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 thus, 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] The decoder may then decode the current picture in the current AU in step 1011 and store the current picture in the DPB. Thus, 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 parsing the slice header of the first slice of the current picture in step 1005. In some cases, NoOutputOfPriorPicsFlag can prevent DPB overflow when switching between a first layer containing a preceding picture and a second layer containing the current picture. Thus, the use of 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. The system 1100 may be performed by an encoder and a decoder, such as the codec system 200, the encoder 300, the decoder 400, and / or the video coding device 800. Furthermore, the system 1100 may perform conformance testing on the multi-layer video sequence 600 and / or the bitstream 700 using the HRD 500. Furthermore, the system 1100 may be used when performing the 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 a plurality of pictures into a bitstream. The video encoder 1102 further includes an HRD module 1105 for checking the bitstream for conformance by setting NoOutputOfPriorPicsFlag if a value of PicWidthMaxInSamplesY of the current AU is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order, emptying the DPB without selecting a picture included 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 towards the decoder. The video encoder 1102 further includes a transmission module 1107 for transmitting the bitstream towards the video decoder 1110. The video encoder 1102 may be further configured to perform any of the steps of the method 900.

[0190] The system 1100 further includes a video decoder 1110. The video decoder 1110 includes a receiving module 1111 for receiving a bitstream including a plurality of pictures. The video decoder 1110 further includes a setting module 1113 for setting NoOutputOfPriorPicsFlag if a value of PicWidthMaxInSamplesY of the current AU is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order. The video decoder 1110 further includes an emptying module 1115 for emptying the DPB without output of a contained picture based on a 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 of the steps 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 couplings. Use of the term "about" means a range that includes ±10% of the succeeding numerical value, unless otherwise specified.

[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 ordering 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] Although several embodiments are provided in the present 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 present disclosure. The examples of the present disclosure should be considered as 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] In addition, the 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 modifications, substitutions, and alterations will be ascertainable by those skilled in the art and may be made without departing from the spirit and scope disclosed 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 Transformation 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 Transformation 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 Layer 700 bitstream 717 Slice Header 718 Picture Header 719 SEI Message 720 Image data 721 First Picture 723 Layer 725 Pictures 727 Slice 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 Memory 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, by a receiver of the decoder, a bitstream comprising a plurality of pictures; setting, by the processor, a value of a maximum picture width in luma samples (PicWidthMaxInSamplesY) of a current access unit (AU) that is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order; emptying a decoded picture buffer (DPB) without outputting any pictures contained therein based on the value of the NoOutputOfPriorPicsFlag; decoding, by the processor, a current picture; storing the current picture according to the DPB; The method includes:

2. 2. The method of claim 1, further comprising: setting, by the processor, the value of NoOutputOfPriorPicsFlag 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 the current picture.

4. The method according to claim 1 , wherein the DPB is emptied after parsing a slice header of a first slice of the 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: constructing, by the processor, 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 if a preceding picture is marked as unused for reference.

8. A method performed by an encoder, comprising: encoding, by a processor of the encoder, a plurality of pictures into a bitstream; A hypothetical reference decoder (HRD) operating in the processor, setting, by the processor, a value of a maximum picture width in luma samples (PicWidthMaxInSamplesY) of a current access unit (AU) if the value of PicWidthMaxInSamplesY of a preceding AU in decoding order is different from the value of PicWidthMaxInSamplesY of the preceding AU; Emptying a decoded picture buffer (DPB) without selecting a committed picture for output based on the value of the NoOutputOfPriorPicsFlag; decoding, by said processor, a current picture; storing the current picture according to the DPB; checking the bitstream for conformance by storing, by a memory coupled to the processor, the bitstream for communication to a decoder; The method includes:

9. 9. The method of claim 8, further comprising: setting, by the HRD operating in the processor, the value of the NoOutputOfPriorPicsFlag 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.

10. The method of claim 8 or 9, wherein the DPB is emptied before decoding the current picture.

11. The method according to any one of claims 8 to 10, wherein the DPB is emptied after parsing a slice header of a first slice of the current picture.

12. 12. The method of claim 8, further comprising the step of decrementing, by the HRD operating in the processor, a DPB fullness variable for each picture removed when emptying the DPB.

13. The method according to any one of claims 8 to 12, further comprising the step of: building a reference picture list and performing reference picture list marking by the HRD operating on the processor.

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

15. 1. A video coding device, comprising:

15. A video coding apparatus comprising: a processor; a receiver coupled to the processor; a memory coupled to the processor; and a transmitter coupled to the processor, wherein the processor, the receiver, the memory, and the transmitter are configured to perform the method of any one of claims 1 to 14.

16. A non-transitory computer-readable medium including a computer program product for use by a video coding device, the computer program product including computer-executable instructions stored on the non-transitory computer-readable medium that, when executed by a processor, causes the video coding device to perform a method according to any one of claims 1 to 14.

17. A decoder comprising: receiving means for receiving a bitstream including a plurality of pictures; a setting means for setting a value of a no output flag (NoOutputOfPriorPicsFlag) of a previous picture when a value of a maximum picture width (PicWidthMaxInSamplesY) in luma samples of a current access unit (AU) is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order; an emptying means for emptying a decoded picture buffer (DPB) without outputting any contained pictures based on the value of the NoOutputOfPriorPicsFlag; decoding means for decoding the current picture; storage means for storing the current picture in a decoded picture buffer (DPB); output means for outputting the current picture from the DPB for display as part of a decoded video sequence; A decoder including:

18. The decoder of claim 17, further configured to perform the method of any one of claims 1 to 7.

19. 1. An encoder comprising: encoding means for encoding the plurality of pictures into a bitstream; setting 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 a value of PicWidthMaxInSamplesY of a preceding AU in decoding order; Emptying a decoded picture buffer (DPB) without selecting a committed picture for output based on the value of the NoOutputOfPriorPicsFlag; decoding the current picture; and storing the current picture in the DPB; a hypothetical reference decoder (HRD) means for checking said bitstream for conformance by storage means for storing said bitstream for communication to a decoder; Including the encoder.

20. 20. The encoder of claim 19, further configured to perform a method according to any one of claims 8 to 14.

21. A method performed by a decoder, comprising: receiving, by a receiver of the decoder, a bitstream comprising a plurality of pictures; emptying a decoded picture buffer (DPB) without outputting a picture contained therein if a value of a maximum picture width (PicWidthMaxInSamplesY) in luma samples of a current access unit (AU) is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order; decoding, by the processor, a current picture; storing the current picture according to the DPB; The method includes:

22. The method of claim 21, further comprising the step of emptying the DPB without outputting any contained pictures 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.

23. The method of claim 21 or 22, wherein the DPB is emptied before decoding the current picture.

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

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

26. 26. The method of claim 21, further comprising: building, by the processor, a reference picture list; and performing reference picture list marking for the current AU before emptying the DPB.

27. 27. The method of claim 21, wherein the DPB is emptied if a preceding picture is marked as unused for reference.

28. A method performed by an encoder, comprising: encoding, by a processor of the encoder, a plurality of pictures into a bitstream; A hypothetical reference decoder (HRD) operating in the processor, Emptying a decoded picture buffer (DPB) without outputting a contained picture if a value of a maximum picture width in luma samples (PicWidthMaxInSamplesY) of a current access unit (AU) is different from a value of PicWidthMaxInSamplesY of a preceding AU in decoding order; decoding, by said processor, a current picture; storing the current picture according to the DPB; checking the bitstream for conformance by storing, by a memory coupled to the processor, the bitstream for communication to a decoder; The method includes:

29. 29. The method of claim 28, further comprising the step of emptying the DPB without outputting any contained pictures 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.

30. 30. The method of claim 28 or 29, wherein the DPB is emptied before decoding the current picture.

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

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

33. 33. The method of claim 28, further comprising: building, by the processor, a reference picture list; and performing reference picture list marking for the current AU before emptying the DPB.

34. 34. The method of claim 28, wherein the DPB is emptied if a preceding picture is marked as unused for reference.