Prohibiting unnecessary layers in multi-layer video bitstreams

By prohibiting unnecessary layers in multi-layer video bitstreams, the method improves coding efficiency and user experience in video transmission, reception, and viewing.

JP7888778B2Inactive Publication Date: 2026-07-13HUAWEI TECH CO LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2025024968
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-09-24
Filing Date
2025-02-19
Publication Date
2026-07-13
Estimated Expiration
Not applicable · inactive patent

Smart Images

  • Figure 0007888778000009
    Figure 0007888778000009
  • Figure 0007888778000010
    Figure 0007888778000010
  • Figure 0007888778000011
    Figure 0007888778000011
Patent Text Reader

Abstract

To provide an improved video compression and decompression method and device.SOLUTION: A decoding method includes the steps of: receiving a video bitstream including a video parameter set (VPS) and a plurality of layers, where any layer is neither an output layer of at least one output layer set (OLS) nor a direct reference layer of any other layer; and decoding a picture from one of the plurality of layers. An encoding method includes the steps of: generating a plurality of layers and a VPS specifying one or more OLSs, where the plurality of layers is restricted so that any layer is neither an output layer of at least one OLS nor a direct reference layer of any other layer; encoding the plurality of layers and the VPS into a video bitstream; and storing, by a video encoder, the video bitstream for communication toward a video decoder.SELECTED DRAWING: Figure 8
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001]

[0002] [Technical Field] Generally, the present disclosure describes techniques for multi - layer video bitstreams in video coding. More specifically, the present disclosure ensures that unnecessary and / or unused layers are prohibited within the multi - layer video bitstream in video coding.

Background Art

[0003] The amount of video data required to depict even a relatively short video can be substantial. This can pose difficulties when the data is streamed across a communication network having limited bandwidth capabilities or otherwise communicated. Thus, video data is typically compressed before being communicated across today's telecommunications networks. When video is stored in a storage device, the size of the video can also be an issue since memory resources may be limited. Video compression devices often use software and / or hardware to encode video data at the source prior to transmission or storage, thereby reducing the amount of data necessary to represent the digital video image. The compressed data is then received at the destination by a video decompression device that decodes the video data. With limited network resources and the ever - increasing demand for higher video quality, improved compression and decompression techniques that improve the compression ratio without sacrificing much or any of the image quality are desirable.

Summary of the Invention

[0004] A first aspect is a decoding method implemented by a video decoder, wherein The video decoder receives a video bitstream containing a video parameter set (VPS) and multiple layers, wherein none of the layers are output layers of at least one output layer set (OLS) or direct reference layers of any other layer. The video decoder performs the step of decoding a picture from one of the multiple layers, Regarding methods including

[0005] The aforementioned method provides a technique for prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in the output layer set (OLS) are either output layers or directly or indirectly referenced layers of output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Therefore, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practical terms, the improved video coding process provides a better user experience when video is transmitted, received, and / or viewed.

[0006] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that the picture is included in the output layer of the at least one OLS.

[0007] Optionally, in any of the embodiments described above, another implementation of the embodiment provides selecting an output layer from the at least one OLS before the decoding step.

[0008] Optionally, in any of the embodiments described above, another implementation of the embodiment provides selecting the output picture from the output layer after the output picture has been selected.

[0009] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that each layer among the plurality of layers includes a set of video coding layer (VCL) network abstraction layer (NAL) units, all of which have a specific value for a layer identifier (ID), and associated non-VCL NAL units.

[0010] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that each layer of the at least one OLS includes the direct reference layer of the output layer or any other layer.

[0011] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that the at least one OLS includes one or more output layers.

[0012] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that the VPS includes a layer used as a reference flag and a layer used as an output layer flag, and that the value of the layer used as a reference flag and the value of the layer used as an output layer flag are both non-zero.

[0013] Optionally, in any of the embodiments described above, another implementation of this embodiment provides for displaying a decoded picture on the display of an electronic device.

[0014] Optionally, in any of the embodiments described above, another implementation of the embodiment is a step of receiving a second video bitstream comprising a second video parameter set (VPS) and a second plurality of layers by the video decoder, wherein at least one layer is neither an output layer of at least one output layer set (OLS) nor a direct reference layer of any other layer, In response to the receiving step, several other corrective measures are taken to ensure that a compliant bitstream corresponding to the second video bitstream is received before decoding the picture from one of the second layers. To provide.

[0015] A second aspect is a method of encoding performed by a video encoder, wherein the method is A video encoder generates a video parameter set (VPS) specifying multiple layers and at least one output layer set (OLS), wherein the video encoder is constrained so that no layer is an output layer of at least one OLS or a direct reference layer of any other layer. The video encoder is used to encode the plurality of layers and the VPS into a video bitstream. The video encoder stores the video bitstream for communication with the video decoder, Regarding methods including

[0016] The aforementioned method provides a technique for prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in the output layer set (OLS) are either output layers or directly or indirectly referenced layers of output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Therefore, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practical terms, the improved video coding process provides a better user experience when video is transmitted, received, and / or viewed.

[0017] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that each of the one or more OLS includes one or more output layers, and each of the output layers includes one or more pictures.

[0018] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that each layer among the plurality of layers includes a set of video coding layer (VCL) network abstraction layer (NAL) units, all of which have a specific value for a layer identifier (ID), and associated non-VCL NAL units.

[0019] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that one of the OLS includes two output layers, and one of the two output layers references the other of the two output layers.

[0020] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that the VPS includes a layer used as a reference flag and a layer used as an output layer flag, and that the value of the layer used as a reference flag and the value of the layer used as an output layer flag are both non-zero.

[0021] A third aspect is a decoding device, A receiver configured to receive a video bitstream containing a video parameter set (VPS) and multiple layers, wherein none of the layers are output layers of at least one OLS or direct reference layers of any other layer, A memory coupled to the receiver, wherein the memory stores instructions, A processor coupled to the memory, wherein the processor executes the instruction to cause the decoding device to decode a picture from one of the plurality of layers in order to obtain a decoded picture, This relates to a decoding device that includes [a specific component / device].

[0022] The decoding device provides a technique for prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in an output layer set (OLS) are either output layers or used as direct or indirect reference layers of output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Therefore, a coder / decoder (also known as a "codec") in video coding is improved over the current codec. As a practical matter, the improved video coding process provides a good user experience to users when the video is transmitted, received, and / or viewed.

[0023] Optionally, in any of the foregoing aspects, another implementation of the aspect provides that the picture is included in an output layer of the at least one OLS.

[0024] Optionally, in any of the foregoing aspects, another implementation of the aspect provides that the processor is further configured to select an output layer from the at least one OLS before the picture is decoded.

[0025] Optionally, in any of the foregoing aspects, another implementation of the aspect provides that the processor is further configured to select the picture from the output layer after the output picture is selected.

[0026] Optionally, in any of the foregoing aspects, another implementation of the aspect provides that each layer in the plurality of layers includes a set of a video coding layer (VCL) network abstraction layer (NAL) unit having all specific values of layer identifiers (IDs) and an associated non-VCL NAL unit.

[0027] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that each layer of the at least one OLS includes the direct reference layer of the output layer or any other layer.

[0028] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that the at least one OLS includes one or more output layers.

[0029] Optionally, in any of the embodiments described above, another implementation of this embodiment provides that the display is configured to show the decoded picture.

[0030] Optionally, in any of the embodiments described above, another implementation of this embodiment further includes the processor executing the instruction to the decoder, The system receives a second video bitstream containing a second video parameter set (VPS) and a second set of multiple layers, wherein at least one layer is neither an output layer of at least one output layer set (OLS) nor a direct reference layer of any other layer. In response to the reception of the second video bitstream, several other corrective measures are provided to ensure that a compliant bitstream corresponding to the second video bitstream is received before decoding a picture from one of the second layers.

[0031] A fourth aspect is an encoding device, Memory containing instructions, A processor coupled to the memory, wherein the processor executes the instruction to the encoding device, The encoding device generates a video parameter set (VPS) that specifies multiple layers and one or more output layer sets (OLS), and the encoding device is constrained such that no layer is an output layer of at least one OLS or a direct reference layer of any other layer. A processor that encodes the aforementioned multiple layers and the VPS into a video bitstream, A transmitter coupled to the processor, wherein the transmitter is configured to transmit the video bitstream to a video decoder, This relates to encoding devices, including those mentioned above.

[0032] The encoding device provides a technique for prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in the output layer set (OLS) are either output layers or used as direct or indirect reference layers to output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Therefore, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practical terms, the improved video coding process provides a better user experience when video is transmitted, received, and / or viewed.

[0033] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that each of the one or more OLS includes one or more output layers, and each of the output layers includes one or more pictures.

[0034] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that each layer among the plurality of layers includes a set of video coding layer (VCL) network abstraction layer (NAL) units, all of which have a specific value for a layer identifier (ID), and associated non-VCL NAL units.

[0035] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that each layer of the at least one OLS includes the direct reference layer of the output layer or any other layer.

[0036] Optionally, in any of the embodiments described above, another implementation of the embodiment provides that the VPS includes a layer used as a reference flag and a layer used as an output layer flag, and that the value of the layer used as a reference flag and the value of the layer used as an output layer flag are both non-zero.

[0037] The fifth aspect relates to a coding device. The coding device is A receiver configured to receive and encode a picture, or to receive and decode a bitstream, A transmitter coupled to the receiver, the transmitter being configured to transmit the bitstream to a decoder or to transmit the decoded image to a display, A memory coupled to at least one of the receiver or the transmitter, wherein the memory is configured to store instructions, A processor coupled to the memory, wherein the processor is configured to execute the instructions stored in the memory in order to perform any of the methods disclosed in this specification, Includes.

[0038] The aforementioned coding device provides a technique for prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in the output layer set (OLS) are either output layers or used as direct or indirect reference layers to output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Therefore, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practical terms, the improved video coding process provides users with a better user experience when video is transmitted, received, and / or viewed.

[0039] Optionally, in any of the embodiments described above, another implementation of this embodiment provides a display configured to display a decoded picture.

[0040] The sixth aspect relates to a system. The system is Encoder and A decoder that communicates with the encoder, wherein the encoder or the decoder includes a decoder, an encoding device, or a coding device disclosed in this specification, Includes.

[0041] The system provides a technique for prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in the output layer set (OLS) are either output layers or directly or indirectly referenced layers of output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Therefore, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practical terms, the improved video coding process provides a better user experience when video is transmitted, received, and / or viewed.

[0042] The seventh aspect relates to coding means. The coding means are Receiving means configured to receive and encode a picture, or receive and decode a bitstream, A transmitting means coupled to the receiving means, wherein the transmitting means is configured to transmit the bitstream to a decoding means or to transmit the decoded image to a display means, A storage means coupled to at least one of the receiving means or the transmitting means, wherein the storage means is configured to store instructions, Processing means coupled to the storage means, wherein the processing means is configured to execute the instructions stored in the storage means in order to perform any of the methods described in this specification, Includes.

[0043] The aforementioned coding means provides a technique for prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in the output layer set (OLS) are either output layers or used as direct or indirect reference layers to output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Therefore, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practical terms, the improved video coding process provides users with a better user experience when video is transmitted, received, and / or viewed.

[0044] For clarity, any one of the embodiments described above may be combined with any one or more of the other embodiments described above to generate a new embodiment within the scope of this disclosure.

[0045] The features described above and other features will be understood more clearly from the following detailed description, which is incorporated in conjunction with the attached drawings and claims. [Brief explanation of the drawing]

[0046] For a more complete understanding of this disclosure, the following brief description is made in relation to the accompanying drawings and detailed description. Herein, similar reference numerals represent similar parts.

[0047] [Figure 1] This is a flowchart illustrating an exemplary method for coding a video signal.

[0048] [Figure 2]This is a schematic diagram illustrating an exemplary coding and decoding (codec) system for video coding.

[0049] [Figure 3] This is a schematic diagram illustrating an example video encoder.

[0050] [Figure 4] This is a schematic diagram illustrating an exemplary video decoder.

[0051] [Figure 5] This example demonstrates multi-layer coding for spatial scalability.

[0052] [Figure 6] This example demonstrates multilayer coding using an Output Layer Set (OLS).

[0053] [Figure 7] An embodiment of a video bitstream is shown.

[0054] [Figure 8] This is an embodiment of a method for decoding a coded video bitstream.

[0055] [Figure 9] This is an embodiment of a method for coding a video bitstream.

[0056] [Figure 10] This is a schematic diagram of a video encoding device.

[0057] [Figure 11] This is a schematic diagram of an embodiment of the coding means. [Modes for carrying out the invention]

[0058] It should be understood from the outset that while one or more explanatory implementations of embodiments are provided below, the systems and / or methods of the disclosure may be implemented using any number of techniques, whether currently known or existing. This disclosure is by no means limited to the explanatory implementations, drawings, and techniques described below, including the exemplary designs and implementations illustrated and described herein, and may be modified within the scope of the appended claims, along with the entire scope of their equivalents.

[0059] The following terms are defined as set forth below, unless used in a conflicting context herein. In particular, the following definitions are intended to provide further clarity to this disclosure. However, terms may be written differently in different contexts. Therefore, the following definitions should be considered supplementary and not intended to be considered limiting to any other definitions of such terms provided for in this specification.

[0060] A bitstream is a sequence of bits containing video data that is compressed for transmission between an encoder and a decoder. An encoder is a device configured to utilize encoding to compress video data into a bitstream. A decoder is a device configured to utilize decoding to reconstruct video data from the bitstream for display. A picture is an array of chroma samples and / or luma samples that generate a frame or its fields. For clarity of discussion, a picture being encoded or decoded can be called the current picture. A reference picture is a picture containing reference samples that can be used when coding other pictures by reference, according to interpretation and / or interlayer prediction. A reference picture list is a list of reference pictures used for interpretation and / or interlayer prediction. Some video coding systems utilize two reference picture lists, which can be represented as reference picture list 1 and reference picture list 0. A reference picture list structure is an addressable syntax structure that contains multiple reference picture lists. Interpretation is a mechanism that, by reference, codes a sample of the current picture to a specified sample in a reference picture that is different from the current picture, where the reference picture and the current picture are on the same layer. A reference picture list structure entry is an addressable location within the reference picture list structure that indicates a reference picture associated with a reference picture list. A slice header is part of a coding slice that contains data elements related to all the video data in the tiles represented within the slice. A picture parameter set (PPS) is a set of parameters that contains data related to the entire picture. More specifically, a PPS is a syntax structure that contains syntax elements that apply to zero or more entire coding pictures, as determined by the syntax elements found within each picture header.A sequence parameter set (SPS) is a set of parameters containing data related to the sequence of pictures. An access unit (AU) is a set of one or more coded pictures associated with the same display time (e.g., the same picture sequence count) for output from the decoded picture buffer (DPB) (e.g., for display to the user). An access unit delimiter (AUD) is an indicator or data structure used to indicate the start of an AU or the boundary between AUs. A decoded video sequence is a sequence of pictures reconstructed by the decoder in preparation for display to the user.

[0061] A network abstraction layer (NAL) unit is a syntax structure containing data in the form of a raw byte sequence payload (RBSP), an indication of the data type, and optionally interspersed with anti-emulation bytes. A video coding layer (VCL) NAL unit is a NAL unit coded to contain video data, such as a coding slice of a picture. A non-VCL NAL unit is a NAL unit containing non-video data, such as syntax and / or parameters that support decoding video data, compliance checking performance, or other operations. A layer is a set of VCL NAL units and associated non-VCL NAL units that share certain characteristics (e.g., common resolution, frame rate, image size, etc.). VCL NAL units in a layer may share a specific value for the NAL unit header layer identifier (nuh_layer_id). A coded picture is a coded representation of a picture that contains a VCL NAL unit that has a specific value for the NAL unit header layer identifier (nuh_layer_id) within an access unit (AU) and includes all of the coding tree units (CTU) of the picture. A decoded picture is a picture produced by applying a decodement process to a coded picture.

[0062] An output layer set (OLS) is a set of layers in which one or more layers are designated as output layers. An output layer is a layer designated for output (e.g., to a display). The zeroth (0-th) OLS is an OLS that contains only the lowest layer (the layer with the lowest layer identifier), and therefore only the output layer. A video parameter set (VPS) is a data unit that contains parameters related to the entire video. Interlayer prediction is a mechanism for coding the current picture in the current layer by referencing a reference picture in a reference layer, where the current picture and the reference picture are in the same AU, and the reference layer has a lower nuh_layer_id than the current layer.

[0063] The following abbreviations are used in this specification: coding tree block (CTB), coding tree unit (CTU), coding unit (CU), coded video sequence (CVS), Joint Video Experts Team (JVET), network abstraction layer (NAL), picture order count (POC), picture parameter set (PPS), raw byte sequence payload (RBSP), sequence parameter set (SPS), versatile video coding (VVC), and working draft (WD).

[0064] Figure 1 is a flowchart of an exemplary operation method 100 for coding a video signal. Specifically, the video signal is encoded by an encoder. The encoding process compresses the video signal by utilizing various mechanisms to reduce the video file size. Smaller file sizes allow for the transmission of a compressed video file to the user while reducing the associated bandwidth overhead. The decoder then decodes the compressed video file to reconstruct the original video signal for display to the end user. The decoding process is typically a mirror of the encoding process, allowing the decoder to reconstruct the video signal without inconsistencies.

[0065] In step 101, the video signal is input to the 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 contain both an audio component and a video component. The video component contains a series of image frames that, when viewed in a sequence, give a visual impression of motion. Each frame contains pixels, which are represented here in terms of light, called the lumina component (or lumina sample), and color, called the chroma component (or chroma sample). In some examples, the frame may also include depth values ​​to support three-dimensional display.

[0066] In step 103, the video is partitioned into blocks. Partitioning involves subdividing the pixels within each frame into square and / or rectangular blocks for compression. For example, in High Efficiency Video Coding (HEVC) (also known as H.265 and MPEG-H Part 2), a frame can first be divided into coding tree units (CTUs), which are blocks of a predetermined size (e.g., 64 pixels × 64 pixels). A CTU contains both lumens and chroma samples. The coding tree may be used to divide the CTUs into blocks, and then to repeatedly subdivide the blocks until a configuration supporting further coding is achieved. For example, the lumens component of a frame may be subdivided until the individual blocks contain relatively similar light values. Furthermore, the chroma component of a frame may be subdivided until the individual blocks contain relatively similar color values. Thus, the partitioning mechanism varies depending on the content of the video frame.

[0067] In step 105, various compression mechanisms are used to compress the image blocks partitioned in step 103. For example, interpretation and / or intrapretation may be used. Interpretation is designed to take advantage of the fact that objects in a common scene tend to appear in consecutive frames. Therefore, a block depicting an object in a reference frame does not need to be shown repeatedly in adjacent frames. Specifically, an object such as a table may remain in the same position across multiple frames. Thus, a table is shown once, and adjacent frames can refer back to the reference frame. Pattern matching mechanisms may be used to match objects across multiple frames. Furthermore, moving objects may be shown across multiple frames, for example, due to the movement of an object or the movement of the camera. As a particular example, a video may show a car moving horizontally across the screen across multiple frames. Motion vectors can be used to show such movement. 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. Therefore, interpretation can encode the image blocks in the current frame as a set of motion vectors indicating the offset from the corresponding block in the reference frame.

[0068] Intra-prediction encodes blocks within a common frame. Intra-prediction takes advantage of the fact that luma and chroma components tend to be densely packed within a frame. For example, some green patches in a tree tend to be located adjacent to similar green patches. Intra-prediction utilizes multiple directional prediction modes (e.g., 33 in HEVC), planar mode, and direct current (DC) mode. Directional modes indicate that a current block is similar to / identical to samples of neighboring blocks in the corresponding direction. Planar mode indicates that a series of blocks along a row / column (e.g., a plane) can be interpolated based on neighboring blocks at the ends of the row. Planar mode effectively shows smooth light / color transitions across rows / columns by utilizing a relatively constant gradient of changing values. DC mode is used for boundary smoothing and indicates that a block is similar to / identical to the mean value related to samples of all neighboring blocks related to the angular direction of the directional prediction mode. Thus, intra-prediction blocks can represent image blocks as various relational prediction modes instead of actual values. Furthermore, intra-prediction blocks can represent image blocks as motion vector values ​​instead of actual values. In any case, the prediction block may not accurately represent the image in some instances. Any differences are stored in the residual block. To further compress the file, transformations may be applied to the residual block.

[0069] 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 generation of an image with uneven grayscale in the decoder. Furthermore, the block-based prediction scheme may encode blocks and then reconstruct the encoded blocks for later use as reference blocks. The in-loop filtering scheme repeatedly applies noise suppression filters, deblocking filters, adaptive loop filters, and sample adaptive offset (SAO) filters to the blocks / filters. These filters mitigate such uneven grayscale artifacts, and as a result, the encoded file can be accurately reconstructed. Moreover, these filters mitigate artifacts in the reconstructed reference blocks, and as a result, there is a low probability of additional artifacts occurring in subsequent blocks encoded based on the reconstructed reference blocks.

[0070] Once the video signal is partitioned, compressed, and filtered, the resulting data is encoded in a bitstream in step 109. The bitstream contains the data described above, and any desired signaling data to support proper video signal reconstruction in the decoder. For example, such data may include partition data, prediction data, residual blocks, and various flags that provide coding instructions to the decoder. The bitstream may be stored in memory for transmission to the decoder upon request. The bitstream may be broadcast and / or multicast to multiple decoders. The generation of the bitstream is an iterative process. Therefore, steps 101, 103, 105, 107, and 109 may occur sequentially and / or simultaneously across a large number of frames and blocks. The order shown in Figure 1 is presented for clarity and ease of discussion and is not intended to limit the video coding process to a specific order.

[0071] In step 111, the decoder receives the bitstream and begins the decoding process. Specifically, the decoder uses an entropy decoding scheme to convert the bitstream into corresponding syntax and video data. In step 111, the decoder uses the syntax from the bitstream to determine the partitions of the frame. The partitions should match the result of the block partitions in step 103. The entropy coding / decoding used in step 111 is described below. During the compression process, the encoder generates many choices, such as selecting a block partition scheme from several possible options based on the spatial location of values ​​in the input image. Signaling the exact choices can utilize a vast number of bins. As used here, bins are binary values ​​treated as variables (e.g., bit values ​​that can change depending on the context). Entropy coding allows the encoder to discard any choices that are obviously not feasible in particular, leaving a set of acceptable choices. Each acceptable choice is then assigned a codeword. The length of the codeword is based on the number of acceptable choices (e.g., one bin for two choices, two bins for three to four choices, etc.). The encoder then encodes a codeword for the selected choice. This method reduces the size of the codeword by being large enough to uniquely represent a choice from a small subset of possible choices, rather than uniquely representing a choice from a potentially large set of all possible choices. The decoder then decodes the choice by determining the set of acceptable choices in a similar manner to the encoder. By determining the set of acceptable choices, the decoder can read the codeword and determine the choice made by the encoder.

[0072] In step 113, the decoder performs block decoding. Specifically, the decoder generates residual blocks using the inverse transform. Next, the decoder uses the residual blocks and the corresponding prediction blocks to reconstruct the image blocks according to the partitions. The prediction blocks may include both intra-prediction blocks and inter-prediction blocks generated in step 105 in the encoder. The reconstructed image blocks are then positioned into frames of the reconstructed video signal according to the partition data determined in step 111. The syntax of step 113 may also be signaled in the bitstream by entropy coding as described above.

[0073] In step 115, filtering is performed on the frames of the reconstructed video signal in a manner similar to that in 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, the video signal can be output to a display in step 117 for viewing by the end user.

[0074] Figure 2 is a schematic diagram of an exemplary coding and decoding (codec) system 200 for video coding. Specifically, the codec system 200 provides functions to support the implementation of operation method 100. The codec system 200 is generalized to show the components used in both the encoder and the decoder. The codec system 200 receives and partitions the video signal described above with respect to steps 101 and 103 of operation method 100, which produces a partitioned video signal 201. The codec system 200 then compresses the partitioned video signal 201 into a coding bitstream when operating as an encoder described above with respect to steps 105, 107, and 109 of method 100. When operating as a decoder, the codec system 200 generates an output video signal from the bitstream as described above with respect to steps 111, 113, 115, and 117 of operation method 100. The codec system 200 includes a general-purpose 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-controlled analysis component 227, an in-loop filter component 225, a decoded picture buffer component 223, and a header format and context adaptive binary arithmetic coding (CABAC) component 231. Such components are combined as shown in the figure. In Figure 2, black lines show the movement of data to be encoded / decoded, while dashed lines show the movement of control data that controls the operation of other components. All components of the codec system 200 may reside within the encoder. The decoder may include some of the components of the codec system 200.For example, the decoder may include an intra-picture prediction component 217, a motion compensation component 219, a scaling and inverse transform component 229, an in-loop filter component 225, and a decoded picture buffer component 223. These components are described here.

[0075] The partitioned video signal 201 is a captured video sequence partitioned into blocks of pixels by a coding tree. The coding tree subdivides blocks of pixels into smaller blocks of pixels using various partitioning modes. These blocks can then be further subdivided into even smaller blocks. Blocks may be called nodes on the coding tree. Larger parent nodes are divided into smaller child nodes. The number of times a node is subdivided is called the node / coding tree depth. Divided blocks may in some cases be contained within a coding unit (CU). For example, a CU may be a sub-part of a CTU containing a luma block, a red difference chroma (Cr) block, and a blue difference chroma (Cb) block, as well as the corresponding syntax instructions for the CU. Partitioning modes may include binary trees (BT), triple trees (TT), and quad trees (QT), which are used to partition a node into 2, 3, or 4 child nodes, each with a shape that varies depending on the partitioning mode used. The partitioned video signal 201 is transferred for compression to a general-purpose coder control component 211, a conversion scaling and quantization component 213, an intra-picture estimation component 215, a filter control analysis component 227, and a motion estimation component 221.

[0076] The general-purpose coder control component 211 is configured to make decisions related to coding images of a video sequence into a bitstream, in accordance with application constraints. For example, the general-purpose coder control component 211 manages the optimization of bitrate / bitstream size for reconstruction quality. Such decisions may be based on memory space / bandwidth availability and image resolution requirements. The general-purpose coder control component 211 also manages buffer utilization in terms of conversion speed to mitigate buffer underrun and overrun problems. To address these issues, the general-purpose coder control component 211 manages partitioning, prediction, and filtering by other components. For example, the general-purpose coder control component 211 may dynamically increase compression complexity to increase resolution, and increase bandwidth usage or decrease compression complexity to reduce resolution and bandwidth usage. Thus, the general-purpose coder control component 211 controls other components of the codec system 200 to balance video signal reconstruction quality and bitrate concerns. The general-purpose coder control component 211 generates control data that controls the operation of other components. The control data is also transferred to the header format and CABAC component 231 so that it is encoded within the bitstream to signal the parameters for decoding in the decoder.

[0077] The partitioned video signal 201 is also transmitted to the motion estimation component 221 and the motion compensation component 219 for interpretation. 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 interpretation coding of the received video blocks in relation to one or more blocks in one or more reference frames, and provide time predictions. The codec system 200 may perform multiple coding passes, for example, to select an appropriate coding mode for each block of video data.

[0078] The motion estimation component 221 and the motion compensation component 219 may be highly integrated, but are shown separately for conceptual purposes. The motion estimation performed by the motion estimation component 221 is the process of generating motion vectors that estimate motion for video blocks. The motion vectors may, for example, indicate the placement of coding objects in relation to prediction blocks. Prediction blocks are blocks that have been found to exactly match the blocks to be coded in terms of pixel differences. Prediction blocks may also be called reference blocks. Such pixel differences may be determined by the sum of absolute differences (SAD), the sum of square differences (SSD), or other difference metrics. HEVC utilizes several coding objects, including CTUs, coding tree blocks (CTBs), and CUs. For example, a CTU can be divided into CTBs, and a CTB can then be divided into CBs to be included in a CU. A CU can be encoded as a prediction unit (PU) containing the predicted data and / or a transform unit (TU) containing the transformed residual data of the CU. The motion estimation component 221 generates motion vectors, PUs, and TUs using rate distortion analysis as part of the rate distortion optimization process. For example, the motion estimation component 221 may determine multiple reference blocks, multiple motion vectors, etc. for the current block / frame and select the reference blocks, motion vectors, etc. that have the optimal rate distortion characteristics. The optimal rate distortion characteristics balance both the quality of video reconstruction (e.g., the amount of data loss due to compression) and coding efficiency (e.g., the size of the final encoding).

[0079] In some examples, the codec system 200 may calculate the value of a sub-integer picture position of the reference picture stored in the decoded picture buffer component 223. For example, the video codec system 200 may interpolate the value of a quarter-pixel position, an eighth-pixel position, or other fractional pixel position of the reference picture. Thus, the motion estimation component 221 may perform motion search in relation to the complete pixel position and fractional pixel position and output a motion vector with fractional pixel precision. The motion estimation component 221 calculates a motion vector for the PU of a video block in the intercoding slice by comparing the PU position with the predicted block position of the reference picture. The motion estimation component 221 outputs the calculated motion vector as motion data to the header format and CABAC component 231 for encoding, and the motion to the motion compensation component 219.

[0080] Motion compensation performed by the motion compensation component 219 may include fetching or generating a predicted block based on a motion vector determined by the motion estimation component 221. Here again, the motion estimation component 221 and the motion compensation component 219 may be functionally integrated in some examples. Upon receiving the motion vector of the current video block's PU, the motion compensation component 219 may identify the location of the predicted block pointed to by the motion vector. Next, a residual video block is formed by subtracting the pixel values ​​of the predicted block from the coded pixel values ​​of the current video block to form a pixel difference value. Generally, the motion estimation component 221 performs motion estimation in relation to the lumens component, and the motion compensation component 219 uses a motion vector calculated based on the lumens component for both the chromens and lumens components. The predicted block and residual block are transferred to the transformation scaling and quantization component 213.

[0081] The partitioned video signal 201 is also transmitted to the intra-picture estimation component 215 and the intra-picture prediction component 217. Similar to 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. Instead of inter-prediction performed by the inter-frame motion estimation component 221 and the motion compensation component 219 as described above, the intra-picture estimation component 215 and the intra-picture prediction component 217 intra-predict the current block in relation to the block in the current frame. In particular, the intra-picture estimation component 215 determines the intra-prediction mode to be used to encode the current block. In some examples, the intra-picture estimation component 215 selects an appropriate intra-prediction mode for encoding the current block from several tested intra-prediction modes. The selected intra-prediction mode is then transmitted to the header format and CABAC component 231 for encoding.

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

[0083] When implemented in an encoder, the intra-picture prediction component 217 may generate residual blocks from prediction blocks based on a selected intra-prediction mode determined by the intra-picture estimation component 215, or when implemented in a decoder, it may read residual blocks from a bitstream. The residual blocks contain the difference in values ​​between the prediction blocks and the original blocks, expressed as a matrix. The residual blocks are then transferred to the transformation scaling and quantization component 213. The intra-picture estimation component 215 and the intra-picture prediction component 217 may operate for both lumens and chroma components.

[0084] The transformation scaling and quantization component 213 is configured to further compress the residual block. The transformation scaling and quantization component 213 applies a transformation such as a discrete cosine transform (DCT), a discrete sine transform (DST), or a conceptually similar transformation to the residual block to generate a video block containing residual transformation coefficient values. Wavelet transforms, integer transforms, subband transforms, or other types of transformations may also be used. The transformation may convert the residual information from a pixel value domain to a transformation domain such as a frequency domain. The transformation scaling and quantization component 213 is also configured to scale the transformed residual information, for example, based on frequency. Such scaling involves applying a magnification factor to the residual information. As a result, different frequency information is quantized at different granularities, which may affect the final visual quality of the reconstructed video. The transformation scaling and quantization component 213 is also configured to quantize the transformation coefficients to further reduce the bitrate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting the quantization parameters. In some examples, the transformation scaling and quantization component 213 may then perform a scan of a matrix containing the quantized transformation coefficients. The quantized transformation coefficients are then transferred to the header format and CABAC component 231 for encoding within the bitstream.

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

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

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

[0088] The header format and CABAC component 231 receive data from various components of the codec system 200 and encode such data into a coding bitstream for transmission to the decoder. Specifically, the header format and CABAC component 231 generate various headers for encoding control data such as general control data and filter control data. Furthermore, prediction data, including intra-prediction and motion data, as well as residual data in the form of quantized transformation coefficient data, are all encoded within the bitstream. The final bitstream contains all the information desired by the decoder to reconstruct the original partitioned video signal 201. Such information may also include an intra-prediction mode index table (also called a codeword mapping table), definitions of the coding contexts for various blocks, indications for the most promising intra-prediction modes, indications for partition information, etc. Such data may be encoded using entropy coding. For example, information may be encoded using context-adaptive variable length coding (CAVLC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy coding techniques. The bitstream coded according to entropy coding may be transmitted to another device (e.g., a video decoder) or stored for later transmission or retrieval.

[0089] Figure 3 is a block diagram showing an exemplary video encoder 300. The video encoder 300 may be used to implement the encoding function of the codec system 200 and / or to implement steps 101, 103, 105, 107 and / or 109 of the operation method 100. The encoder 300 partitions the input video signal to produce a partitioned video signal 301 which is substantially similar to the partitioned video signal 201. The partitioned video signal 301 is then compressed and encoded into a bitstream by the components of the encoder 300.

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

[0091] The transformed and quantized residual blocks and / or corresponding predicted blocks are also transferred from the transform and quantize component 313 to the inverse transform and quantize component 329 for reconstruction into reference blocks for use by the motion compensation component 321. The inverse transform and quantize component 329 may be substantially the same as the scaling and inverse transform component 229. The in-loop filters in the in-loop filter component 325 are also applied to the residual blocks and / or reconstructed reference blocks, depending on the example. The in-loop filter component 325 may be substantially the same as the filter-controlled analysis component 227 and the in-loop filter component 225. The in-loop filter component 325 may contain multiple filters, as discussed with respect to the in-loop filter component 225. The filtered blocks are then stored in the decoded picture buffer component 323 for use as reference blocks by the motion compensation component 321. The decoded picture buffer component 323 may be substantially the same as the decoded picture buffer component 223.

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

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

[0094] The reconstructed residual blocks and / or predicted blocks are transferred to the intra-picture prediction component 417 for reconstruction into image blocks based on the intra-prediction operation. The intra-picture prediction component 417 may be the same as the intra-picture estimation component 215 and the intra-picture prediction component 217. Specifically, the intra-picture prediction component 417 uses the prediction mode to determine the position of a reference block in the frame and applies the residual block to the result to reconstruct the intra-predicted image block. The reconstructed intra-predicted image block and / or residual block, and the corresponding inter-prediction data are transferred to the decoded picture buffer component 423 via the decoded picture buffer component 223 and the in-loop filter component 425, which may be substantially the same as the in-loop filter component 225, respectively. The in-loop filter component 425 filters the reconstructed image block, residual block, and / or predicted block, and such information is stored in the decoded picture buffer component 423. The reconstructed image block from the decoded picture buffer component 423 is transferred to the motion compensation component 421 for inter-prediction. The motion compensation component 421 may be substantially the same as the motion estimation component 221 and / or the motion compensation component 219. Specifically, the motion compensation component 421 uses motion vectors from a reference block to generate a predicted block and provides a residual block to reconstruct the image block. The resulting reconstructed block may be transferred to the decoded picture buffer component 423 via the in-loop filter component 425. The decoded picture buffer component 423 may continue to store additional reconstructed image blocks that can be reconstructed into frames by partition information. Such frames may be placed in a sequence. The sequence is output to a display as a reconstructed output video signal.

[0095] With the above in mind, video compression techniques reduce or eliminate inherent redundancy in a video sequence by performing spatial (intra-picture) prediction and / or temporal (inter-picture) prediction. In block-based video coding, a video slice (i.e., a video picture or a portion of a video picture) may be partitioned into video blocks, which may also be called tree blocks, coding tree blocks (CTBs), coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coding (I) slice of a picture are coded using spatial prediction for reference samples in neighboring blocks within the same picture. Video blocks in an inter-coding (P or B) slice of a picture may utilize spatial prediction for reference samples in neighboring blocks within the same picture, or temporal prediction for reference samples in other reference pictures. A picture may be called a frame, and a reference picture may be called a reference frame. The POC is a variable associated with each picture that uniquely identifies the associated picture among all pictures in the coded layer video sequence (CLVS) for each picture, indicates when the associated picture is output from the DPB, and indicates the position of the associated picture in the output order relative to the output order positions of other pictures in the same CLVS that should be output from the DPB. The flag is a variable or a single-bit syntax element that can take one of two possible values: 0 and 1.

[0096] Spatial or temporal predictions produce predicted blocks of the blocks to be coded. Residual data represents the pixel difference between the original blocks to be coded and the predicted blocks. Intercoding blocks are coded according to a motion vector pointing to the reference sample blocks forming the predicted blocks, and residual data indicating the difference between the coding blocks and the predicted blocks. Intracoding blocks are coded according to the intracoding mode and residual data. For further compression, the residual data may be transformed from the pixel domain to the transformation domain, resulting in residual transformation coefficients, which may then be quantized. The quantized transformation coefficients are first organized into a two-dimensional array and may be scanned to generate a one-dimensional vector of transformation coefficients, and entropy coding may be applied to achieve further compression.

[0097] Image and video compression has experienced rapid growth, giving rise to various coding standards. Such video coding standards include Advanced Video Coding (AVC), also known as ITU-TH.261, MPEG-1 Part 2, ITU-TH.262 or ISO / IEC MPEG-2 Part 2, ITU-TH.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 Scalable Video Coding (SVC), Multiview Video Coding (MVC), and Multiview Video Coding plus Depth HEVC includes extensions such as MVC+D and 3D AVC (3D-AVC). HEVC also includes extensions such as Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC), and 3D HEVC (3D-HEVC).

[0098] The ITU-T and ISO / IEC Joint Video Experts Team (JVET) has also developed a new coding standard called Versatile Video Coding (VVC). The VVC standard has several working drafts, but in particular, one working draft (WD) of VVC, namely B. Bross, J. Chen, and S. Liu, "Versatile Video Coding (Draft 5)", JVET-N1001-v3, 13th JVET Meeting, March 27, 2019 (VVC Draft 5), is referred to here.

[0099] Scalability in video coding is supported by using multi-layer coding techniques. A multi-layer bitstream includes a base layer (BL) and one or more enhancement layers (EL). Examples of scalability include spatial scalability, signal-to-noise (SNR) scalability, and multi-view scalability. When multi-layer coding techniques are used, a picture or part thereof can be coded (1) without using a reference picture, i.e., by using intra-prediction; (2) by referencing a reference picture in the same layer, i.e., by using inter-prediction; or (3) by referencing a reference picture in another layer, i.e., by using inter-layer prediction. The reference picture currently used for inter-layer prediction of a picture is called an inter-layer reference picture (ILRP).

[0100] Figure 5 is a schematic diagram showing an example of a layer-based prediction 500, which is performed to determine the motion video (MV) in, for example, the block compression step 105, the block decoding step 113, the motion estimation component 221, the motion compensation component 219, the motion compensation component 321, and / or the motion compensation component 421. The layer-based prediction 500 is compatible with unidirectional interpretation and / or bidirectional interpretation, but can also be performed between pictures of different layers.

[0101] Layer-based prediction 500 is applied between pictures 511, 512, 513, and 514 and pictures 515, 516, 517, and 518 in different layers. In the illustrated example, pictures 511, 512, 513, and 514 are part of layer N+1 532, and pictures 515, 516, 517, and 518 are part of layer N531. Layers like layer N 531 and / or layer N+1 532 are groups of pictures that all relate to similar values ​​of characteristics such as similar size, quality, resolution, signal-to-noise ratio, and capability. Thus, pictures 511, 512, 513, and 514 in layer N+1 532 have a larger picture size (e.g., larger height and width, and therefore more samples) than pictures 515, 516, 517, and 518 in layer N 531 in this example. However, such pictures can be separated between layer N+1 532 and layer N 531 by other characteristics. Although only two layers, layer N+1 532 and layer N 531, are shown, a set of pictures can be separated into any number of layers based on relevant characteristics. Layers N+1 532 and N 531 may be indicated by layer IDs. A layer ID is a data item associated with a picture and indicates that the picture is part of the layer to which it is shown. Thus, each picture 511-518 can be associated with a corresponding layer ID to indicate which layer N+1 532 or layer N 531 contains the corresponding figure.

[0102] Pictures 511-518 in different layers 531-532 are configured to be displayed as alternatives. In this way, pictures 511-518 in different layers 531-532 can share the same time identifier (ID) and be contained within the same AU. As used herein, an AU is a set of one or more coded pictures associated with the same display time for output from a DPB. For example, if a smaller picture is desired, the decoder may decode and display picture 515 at the current display time, and if a larger picture is desired, the decoder may decode and display picture 511 at the current display time. Thus, pictures 511-514 in the upper layer N+1 532 contain substantially the same image data as the corresponding pictures 515-518 in the lower layer N 531 (despite the difference in picture size). Specifically, picture 511 contains substantially the same image data as picture 515, picture 512 contains substantially the same image data as picture 516, and so on.

[0103] Pictures 511-518 can be coded by referencing other pictures 511-518 in the same layer N 531 or N+1 532. Coded a picture by referencing another picture in the same layer yields an interprediction 523 which is a compatible unidirectional interprediction and / or a bidirectional interprediction. The interprediction 523 is indicated by a solid arrow. For example, picture 513 may be coded by employing an interprediction 523 that references one or two of pictures 511, 512, and / or 514 in layer N+1 532, where one picture is referenced for a unidirectional interprediction and / or two pictures are referenced for bidirectional interpredictions. Furthermore, picture 517 may also be coded by employing interpretation 523, which uses one or two of pictures 515, 516, and / or 518 in layer N531 as references, where one picture is referenced for one-way interpretation and / or two pictures are referenced for bidirectional interpretation. A picture may be called a reference picture if it is used as a reference for another picture in the same layer when performing interpretation 523. For example, picture 512 may be a reference picture used to code picture 513 according to interpretation 523. Interpretation 523 may also be called intralayer prediction in a multilayer context. Thus, interpretation 523 is a mechanism that, by reference, codes a sample of the current picture to a specified sample in a reference picture that is different from the current picture, where the reference picture and the current picture are in the same layer.

[0104] Pictures 511-518 can also be coded by referencing other pictures 511-518 in different layers. This process is known as interlayer prediction 521 and is indicated by a dashed arrow. Interlayer prediction 521 is a mechanism for coding a sample of the current picture by referencing an indicated sample in a reference picture when the current picture and the reference picture are in different layers and therefore have different layer IDs. For example, a picture in a lower layer N 531 can be used as the reference picture to code the corresponding picture into a higher layer N+1 532. In a specific example, picture 511 can be coded by referencing picture 515 according to interlayer prediction 521. In such a case, picture 515 is used as the interlayer reference picture. The interlayer reference picture is the reference picture used in interlayer prediction 521. In most cases, interlayer prediction 521 is constrained so that the current picture, such as picture 511, can only use interlayer reference pictures that are in the same AU and are in lower layers, such as picture 515. If multiple layers (e.g., two or more) are available, the interlayer prediction 521 can encode / decode the current picture based on multiple interlayer reference pictures at a lower level than the current picture.

[0105] The video encoder can encode pictures 511-518 using layer-based prediction 500 via many different combinations and / or permutations of inter-prediction 523 and inter-layer prediction 521. For example, picture 515 may be coded according to intra-prediction. Then, by using picture 515 as a reference picture, pictures 516-518 can be coded according to inter-prediction 523. Furthermore, picture 511 may be coded according to inter-layer prediction 521 by using picture 515 as an inter-layer reference picture. Then, by using picture 511 as a reference picture, pictures 512-514 can be coded according to inter-prediction 523. Thus, a reference picture can function as both a single-layer reference picture and an inter-layer reference picture for different coding mechanisms. By coding the upper layer N+1 532 picture based on the lower layer N 531 picture, the upper layer N+1 532 can avoid using intra-prediction, which has much lower coding efficiency than inter-prediction 523 and inter-layer prediction 521. Therefore, the inferior coding efficiency of intra prediction may be limited to the smallest / lowest quality pictures, and thus limited to coding the smallest amount of video data. Pictures used as reference pictures and / or interlayer reference pictures can be indicated in the reference picture list entries included in the reference picture list structure.

[0106] Each AU506 in Figure 5 can contain several pictures. For example, one AU506 can contain pictures 511 and 515. Another AU506 can contain pictures 512 and 516. In fact, each AU506 is a set of one or more coded pictures associated with the same display time (e.g., the same time ID) to be output from the decoded picture buffer (DPB) (e.g., for display to the user). Each AUD508 is an indicator or data structure used to indicate the start of an AU (e.g., AU508) or a boundary between AUs.

[0107] The previous H.26x video coding family has provided scalability support in a profile separate from the profile for single-layer coding. Scalable video coding (SVC) is a scalable extension of AVC / H.264 that provides support for spatial, temporal, and qualitative scalability. In SVC, a flag is signaled within each macroblock (MB) in an EL picture to indicate whether the EL MB can be predicted using a co-located block from a lower layer. Predictions from co-located blocks may include textures, motion vectors, and / or coding modes. Implementations of SVC cannot be directly reused from unmodified H.264 / AVC implementations in the design. The syntax and decoding of SVC EL macroblocks are different from those of H.264 / AVC.

[0108] Scalable HEVC (SHVC) is an extension of the HEVC / H.265 standard that provides support for spatial and qualitative scalability, multiview HEVC (MV-HEVC) is an extension of HEVC / H.265 that provides support for multiview scalability, and 3DHEVC (3D-HEVC) is an extension of HEVC / H.264 that provides more advanced and efficient support for three-dimensional (3D) video coding than MV-HEVC. Note that temporal scalability is included as an integral part of the single-layer HEVC codec. The design of the multi-layer extension of HEVC utilizes the idea that the decoded image used for interlayer prediction comes from only the same access unit (AU) and is treated as a long-term reference picture (LTRP), and is assigned a reference index in the reference picture list along with other time reference pictures in the current layer. Inter-layer prediction (ILP) is achieved at the prediction unit (PU) level by setting the reference index value to reference the inter-layer reference picture in the reference picture list.

[0109] Notably, both reference picture resampling and spatial scalability features require resampling of the reference picture or a portion thereof. Reference picture resampling (RPR) can be implemented at either the picture level or the coding block level. However, when RPR is referred to as an encoding feature, it is a feature for single-layer coding. Even so, it is possible, or even desirable, from a codec design perspective to use the same resampling filter for both single-layer coding RPR features and multi-layer coding spatial scalability features.

[0110] Figure 6 shows an example of layer-based prediction 600 that utilizes an output layer set (OLS), such as being performed to determine the motion video (MV) in the block compression step 105, block decoding step 113, motion estimation component 221, motion compensation component 219, motion compensation component 321, and / or motion compensation component 421. Layer-based prediction 500 is compatible with unidirectional interpretation and / or bidirectional interpretation, but can also be performed between pictures of different layers. The layer-based prediction in Figure 6 is similar to that in Figure 5. Therefore, for simplicity, a complete explanation of layer-based prediction is not repeated.

[0111] Some of the layers in the coded video sequence (CVS) 690 in Figure 6 are included in an OLS. An OLS is a set of layers in which one or more layers are designated as output layers. Output layers are the layers of the output OLS. Figure 6 shows three different OLSs, namely OLS1, OLS2, and OLS3. As shown, OLS1 includes layers N631 and N+1 632. OLS2 includes layers N631, N+1 632, N+2 633, and N+1 634. OLS3 includes layers N631, N+1 632, and N+2 633. Although three OLSs are shown, different numbers of OLSs may be used in actual applications.

[0112] Each different OLS may contain any number of layers. Different OLSs are generated to address the coding capabilities of various different devices with varying coding capabilities. For example, OLS1 may contain only two layers and be generated to address a mobile phone with relatively limited coding capabilities. On the other hand, OLS2 may contain four layers and be generated to address a large-screen television capable of decoding more layers than a mobile phone. OLS3 may contain three layers and be generated to address a personal computer, laptop computer, or tablet computer that can decode more layers than a mobile phone but cannot decode the most layers, like a large-screen television.

[0113] The layers in Figure 6 can all be independent of each other; that is, each layer can be coded without using inter-layer prediction (ILP). In this case, the layer is called a broadcast layer. One or more of the layers in Figure 6 may be coded using ILP. Whether a layer is a broadcast layer, or whether some of the layers are coded using ILP, is signaled by a flag in the video parameter set (VPS). This is discussed in detail below. When some layers use ILP, layer dependencies between layers are also signaled in the VPS.

[0114] In the embodiment, when a layer is a broadcast layer, only one layer is selected for decoding and output. In the embodiment, when several layers use ILP, all layers (e.g., the entire bitstream) are designated to be decoded, and a specific layer among the layers is designated as an output layer. One or more output layers may be, for example, 1) only the top layer, 2) all layers, or 3) the top layer and a set of lower layers designated as such. For example, if the top layer and a set of lower layers designated as such are designated for output by a flag in the VPS, then layers N+3 634 (which is the top layer) and layers N631 and N+1 632 (which are lower layers) from OLS2 will be output.

[0115] Referring further to Figure 6, some layers are included in the OLS but are not output or are not used for reference by the output layers. For example, layer N+2 633 is included in OLS2 but is not output. Rather, layer N+3 634 is the top layer in OLS2 and is therefore output as the output layer. Furthermore, layer N+2 633 in OLS2 is not used for reference by the output layer layer N+3 634. In fact, layer N+3 634 in OLS2 depends on layer N+2 633, layer N+1 632, and / or layer N631 in OLS2. Therefore, layer N+2 633 in OLS2 is called an unnecessary layer. Unfortunately, SHVC and MV-HEVC allow such unnecessary layers to be included in multi-layer video bitstreams. This unnecessarily burdens coding resources and reduces coding efficiency.

[0116] This specification discloses a technique for prohibiting unnecessary layers in a multi-layer video bitstream. In other words, all layers included in the output layer set (OLS) are either output layers or used as direct or indirect reference layers to output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Consequently, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practical terms, the improved video coding process provides users with a better user experience when video is transmitted, received, and / or viewed.

[0117] Figure 7 shows an embodiment of the video bitstream 700. As used herein, the video bitstream 700 may also represent a coded video bitstream, a bitstream, or a variation thereof. As shown in Figure 7, the bitstream 700 includes at least one picture unit (PU) 701. Three PUs 701 are shown in Figure 7, but in actual applications, different numbers of PUs 701 may be present in the bitstream 700. Each PU 701 is a set of NAL units containing exactly one coded picture (e.g., picture 714) that are consecutive in decoding order and associated with each other according to a given classification rule.

[0118] In the embodiment, each PU 701 includes one or more of the following: decoding capability information (DCI) 702, video parameter set (VPS) 704, sequence parameter set (SPS) 706, picture parameter set (PPS) 708, picture header (PH) 712, and picture 714. Each of the DCI 702, VPS 704, SPS 706, and PPS 708 may be collectively referred to as a parameter set. In the embodiment, other parameter sets not shown in Figure 7, such as an adaptation parameter set (APS), may be included in the bitstream 700, which is a syntax structure containing syntax elements that apply to zero or more slices determined by zero or more syntax elements found in the slice header.

[0119] DCI702, also known as the decoding parameter set (DPS) or decoder parameter set, is a syntax structure containing syntax elements that apply to the entire bitstream. DCI702 includes parameters that remain constant for the lifetime of a video bitstream (e.g., bitstream 700), which can be translated into the lifetime of a session. DCI702 may include profile, level, and subprofile information to determine the maximum complexity interoperability point that is guaranteed never to be exceeded, even if splicing of the video sequence occurs within a session. It may further optionally include constraint flags, indicating that the video bitstream is constrained in the use of certain features, as indicated by the values ​​of those flags. This allows a bitstream to be labeled as not using certain tools, particularly enabling resource allocation in decoder implementations. Like all parameter sets, DCI702 must exist when first referenced, referenced by the first picture of the video sequence, and transmitted between the first NAL units of the bitstream. Multiple DCI702s can exist within a bitstream, but the values ​​of their syntax elements cannot be inconsistent when referenced.

[0120] VPS704 includes decoding dependencies or information for the reference picture set configuration of the extension layer. VPS704 provides an overall perspective or view of the scalable sequence, including what types of operation points are offered, the operation point profiles, tiers, and levels, as well as several other high-level characteristics of the bitstream that can be used as the basis for session negotiation and content selection.

[0121] In the embodiment, when it is shown that some of the layers use ILP, VPS704 indicates that the total number of OLS specified by VPS is equal to the number of layers, that the i-th OLS contains layers with layer indices from 0 to i including both ends, and that for each OLS, only the top layer within the OLS is output.

[0122] In embodiments, VPS704 includes syntax and semantics corresponding to CLVS and / or OLS in the video bitstream. The following syntax and semantics corresponding to VPS704 may be used to implement embodiments disclosed in this specification.

[0123] The syntax for VPS704 may be as follows: [Table 1-1] [Table 1-2]

[0124] The semantics for VPS704 may be as follows. In this embodiment, VPS704 includes one or more of the flags and parameters listed below.

[0125] The VPS raw byte sequence payload (RBSP) should be available for decryption before it is referenced and should be contained in at least one access unit provided through external means or having a TemporalId equal to 0. A VPS NAL unit containing a VPS RBSP should have a nuh_layer_id equal to vps_layer_id[0]. The nuh_layer_id specifies the identifier of the layer to which the VCL NAL unit belongs, or the identifier of the layer to which a non-VCL NAL unit applies. The value of nuh_layer_id should be in the range of 0 to 55, including both ends. The TemporalId is an ID used to uniquely identify a particular NAL unit to other NAL units. The value of the TemporalId should be the same for all VCL NAL units in an AU. The value of the TemporalId for a coding picture, PU, ​​or AU is the value of the TemporalId for the VCL NAL unit in the coding picture, PU, ​​or AU.

[0126] All VPS NAL units within a CVS with a specific value for vps_video_parameter_set_id should have the same content. vps_video_parameter_set_id provides an identifier for the VPS for reference by other syntax elements. vps_max_layers_minus1 plus 1 specifies the maximum number of allowed layers within each CVS referencing the VPS. vps_max_sub_layers_minus1 plus 1 specifies the maximum number of temporal sublayers that may exist within each CVS referencing the VPS. The value of vps_max_sub_layers_minus1 should be in the range of 0 to 6, including both ends.

[0127] A value of vps_all_independent_layers_flag equal to 1 specifies that all layers in CVS are coded independently without using interlayer prediction. A value of vps_all_independent_layers_flag equal to 0 specifies that one or more layers in CVS may use interlayer prediction. If none exists, the value of vps_all_independent_layers_flag is assumed to be equal to 1. When vps_all_independent_layers_flag is equal to 1, the value of vps_independent_layer_flag[i] is assumed to be equal to 1. When vps_all_independent_layers_flag is equal to 0, the value of vps_independent_layer_flag[0] is assumed to be equal to 1.

[0128] vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer. For any two non-negative integer values ​​of m and n, when m is less than n, the value of vps_layer_id[m] should be less than vps_layer_id[n]. vps_independent_layer_flag[i] equal to 1 indicates that the layer with index i does not use interlayer prediction. vps_independent_layer_flag[i] equal to 0 indicates that the layer with index i may use interlayer prediction and that vps_layer_dependency_flag[i] exists in the VPS. If it does not exist, the value of vps_independent_layer_flag[i] is assumed to be equal to 1.

[0129] If vps_direct_dependency_flag[i][j] is equal to 0, it specifies that the layer with index j is not a direct reference layer of the layer with index i. If vps_direct_dependency_flag[i][j] is equal to 1, it specifies that the layer with index j is a direct reference layer of the layer with index i. If vps_direct_dependency_flag[i][j] does not exist for i and j within the range of 0 to vps_max_layers_minus1 (including both ends), it is assumed to be equal to 0.

[0130] The variable DirectDependentLayerIdx[i][j], which specifies the j-th directly dependent layer of the i-th layer, is derived as follows:

number

[0131] The variable GeneralLayerIdx[i], which specifies the layer index of the layer with a nuh_layer_id equal to vps_layer_id[i], is derived as follows:

number

[0132] `each_layer_is_an_ols_flag` being equal to 1 indicates that each output layer set contains only one layer, and each layer in the bitstream itself is an output layer set in which the only layer it contains is the output layer. `each_layer_is_an_ols_flag` being equal to 0 means that an output layer may contain more than one layer. If `vps_max_layers_minus1` is equal to 0, the value of `each_layer_is_an_ols_flag` is assumed to be equal to 1. Otherwise, if `vps_all_independent_layers_flag` is equal to 0, the value of `each_layer_is_an_ols_flag` is assumed to be equal to 0.

[0133] ols_mode_idc being equal to 0 means that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices from 0 to i (including both ends), and for each OLS, only the top layer within the OLS is output. ols_mode_idc being equal to 1 means that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices from 0 to i (including both ends), and for each OLS, all layers within the OLS are output. ols_mode_idc being equal to 2 means that the total number of OLS specified by the VPS is explicitly signaled, and for each OLS, the top layer and a set of lower layers within the OLS that are explicitly signaled are output. The value of ols_mode_idc should be in the range of 0 to 2 (including both ends). A value of 3 for ols_mode_idc is reserved for future use by ITU-T / ISO / IEC. When vps_all_independent_layers_flag is equal to 1 and each_layer_is_an_ols_flag is equal to 0, the value of ols_mode_idc is assumed to be equal to 2.

[0134] Adding 1 to num_output_layer_sets_minus1 specifies the total number of OLS specified by the VPS when ols_mode_idc is equal to 2.

[0135] The variable TotalNumOlss, which specifies the total number of OLS designated by the VPS, is derived as follows:

number

[0136] `layer_included_flag[i][j]` specifies whether the j-th layer (i.e., the layer with a nuh_layer_id equal to vps_layer_id[j]) is included in the i-th OLS when ols_mode_idc is equal to 2. `layer_included_flag[i][j]` being equal to 1 indicates that the j-th layer is included in the i-th OLS. `layer_included_flag[i][j]` being equal to 0 indicates that the j-th layer is not included in the i-th OLS.

[0137] The variables NumLayersInOls[i], which specifies the number of layers in the i-th OLS, and LayerIdInOls[i][j], which specifies the nuh_layer_id value of the j-th layer in the i-th OLS, are derived as follows:

number

[0138] The variable OlsLayerIdx[i][j], which specifies the OLS layer index of the layer having a nuh_layer_id equal to LayerIdInOls[i][j], is derived as follows:

number

[0139] The lowest layer within each OLS should be an independent layer. In other words, for each i in the range of 0 to TotalNumOlss-1, including both ends, the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]] should be equal to 1.

[0140] Each layer should be contained within at least one OLS specified by the VPS. That is, for each layer having a nuh_layer_idnuhLayerId of a specific value equal to one of vps_layer_id[k] for k in the range 0 to vps_max_layers_minus1 including both ends, there may be at least one pair of values ​​i and j. Here, i is in the range 0 to TotalNumOlss-1 including both ends, and j is in the range NumLayersInOls[i]-1 including the ends, so that the value of LayerIdInOls[i][j] is equal to nuhLayerId.

[0141] Any layer within OLS should be either an OLS output layer or a (direct or indirect) reference layer of an OLS output layer.

[0142] The vps_output_layer_flag[i][j] specifies whether the j-th layer in the i-th OLS is output when ols_mode_idc is equal to 2. A value of vps_output_layer_flag[i] equal to 1 indicates that the j-th layer in the i-th OLS is output. A value of vps_output_layer_flag[i] equal to 0 indicates that the j-th layer in the i-th OLS is not output. When vps_all_independent_layers_flag is equal to 1 and each_layer_is_an_ols_flag is equal to 0, the value of vps_output_layer_flag[i] is presumed to be equal to 1.

[0143] For the variable OutputLayerFlag[i][j], a value of 1 specifies that the j-th layer in the i-th OLS is output, and a value of 0 specifies that the j-th layer in the i-th OLS is not output, which is derived as follows.

number

[0144] Note: The 0th OLS will only include the lowest layer (i.e., the layer with a nuh_layer_id equal to vps_layer_id[0]), and for the 0th OLS, only the included layers will be output.

[0145] vps_constraint_info_present_flag is equal to 1, which means general_constraint_info( Specifies that the syntax structure exists within the VPS. A value of 0 for vps_constraint_info_present_flag indicates that the general_constraint_info() syntax structure does not exist within the VPS.

[0146] vps_reserved_zero_7bits should be equal to 0 in bitstreams conforming to this version of this VVC draft. Other values ​​for vps_reserved_zero_7bits are reserved for future use by ITU-T / ISO / IEC. In embodiments, the decoder should ignore the value of vps_reserved_zero_7bits.

[0147] A general_hrd_params_present_flag equal to 1 indicates that the syntax elements num_units_in_tick and time_scale and the syntax structure general_hrd_parameters() exist within the SPS RBSP syntax structure. A general_hrd_params_present_flag equal to 0 indicates that the syntax elements num_units_in_tick and time_scale and the syntax structure general_hrd_parameters() do not exist within the SPS RBSP syntax structure.

[0148] num_units_in_tick is the number of time units of a clock operating at a frequency time_scale Hz, corresponding to one increment of the clock tick counter (called a clock tick). num_units_in_tick should be greater than 0. A clock tick is in seconds and is equal to the quotient obtained by dividing num_units_in_tick by time_scale. For example, when the picture rate of a video signal is 25 Hz, time_scale may be equal to 27,000,000, num_units_in_tick may be equal to 1,080,000, and therefore clock ticks may be equal to 0.04 seconds.

[0149] `time_scale` is the number of time units that elapse in one second. For example, a time coordinate system that measures time using a 27MHz clock has a `time_scale` of 27,000,000. The value of cale should be greater than 0.

[0150] A value of 0 for `vps_extension_flag` indicates that `vps_extension_data_flag` does not exist within the VPS RBSP syntax structure. A value of 1 for `vps_extension_flag` indicates that the `vps_extension_data_flag` syntax element exists within the VPS RBSP syntax structure.

[0151] The vps_extension_data_flag may have any value. Its presence and value do not affect decoder compliance to profiles specified within this version of this specification. Decoders conforming to this version of this specification should ignore all vps_extension_data_flag syntax elements.

[0152] SPS706 contains data common to all pictures in a sequence of pictures (SOP). SPS706 is a syntax structure that includes zero or more syntax elements applicable to the entire CLVS, determined by the content of syntax elements found in the PPS referenced by syntax elements found in each picture header. In contrast, PPS708 contains data common to the entire picture. PPS708 is a syntax structure that includes zero or more syntax elements applicable to the entire coding picture, determined by syntax elements found in each picture header (e.g., PH712).

[0153] DCI702, VPS704, SPS706, and PPS708 belong to different types of Network Abstraction Layer (NAL) units. A NAL unit is a syntactic structure that contains instructions on the type of data to follow (e.g., coding video data). NAL units are classified into video coding layer (VCL) and non-VCL NAL units. VCL NAL units contain data representing the values ​​of samples in a video picture, while non-VCL NAL units contain optional additional relevant information such as parameter sets (essential data applicable to many VCL NAL units) and supplemental extensions (timing information and other supplemental data that is not necessary to decode the values ​​of samples in a video picture but may enhance the usefulness of the decoded video signal).

[0154] In this embodiment, DCI702 is included in a non-VCL NAL unit designated as either a DCI NAL unit or a DPS NAL unit. That is, a DCI NAL unit has a DCI NAL unit type (NAL unit type (NUT)), and a DPS NAL unit has a DPS NUT. In this embodiment, VPS704 is included in a non-VCL NAL unit designated as a DPS NAL unit. Therefore, a VPS NAL unit has a VPS NUT. In this embodiment, SPS706 is a non-VCL NAL unit designated as an SPS NAL unit. Therefore, an SPS NAL unit has an SPS NUT. In this embodiment, PPS708 is included in a non-VCL NAL unit designated as a PPS NAL unit. Therefore, a PPS NAL unit has a PPS NUT.

[0155] PH712 is a syntax structure that includes syntax elements that apply to all slices (e.g., slice 718) of a coding picture (e.g., picture 714). In embodiments, PH712 is a new type of non-VCL NAL unit designated as a PH NAL unit. Thus, a PH NAL unit has a PH NUT (e.g., PH_NUT). In embodiments, each PU701 contains one and only PH712; that is, a PU701 contains a single or isolated PH712. In embodiments, exactly one PHNAL unit exists for each picture 701 in the bitstream 700.

[0156] In this embodiment, the PH NAL unit associated with PH712 has a time ID and a layer ID. The time ID identifier indicates the temporal position of the PH NAL unit relative to other PH NAL units in the bitstream (e.g., bitstream 701). The layer ID indicates the layer containing the PH NAL unit (e.g., layer 531 or layer 532). In this embodiment, the time ID is similar to, but different from, the POC. The POC uniquely identifies each picture in sequence. In a single-layer bitstream, the time ID and POC are the same. In a multi-layer bitstream (see, for example, Figure 5), pictures within the same AU have different POCs but the same time ID.

[0157] In the embodiment, the PH NAL unit precedes the VCL NAL unit which includes the first slice 718 of the associated picture 714. This establishes the association between the PH712 and the slice 718 of the picture 714 associated with the PH712 without requiring the PH712 to have a picture header ID which is signaled within the PH712 and referenced from the slice header 720. Thus, all VCL NAL units between two PH712s can be presumed to belong to the same picture 714, and the picture 714 is associated with the first PH712 between the two PH712s. In the embodiment, the first VCL NAL unit following the PH712 includes the first slice 718 of the picture 714 associated with the PH712.

[0158] In this embodiment, the PH NAL unit follows a picture-level parameter set (e.g., PPS), or a higher-level parameter set (e.g., DCI (also known as DPS), VPS, SPS, PPS, etc.), each having a time ID and layer ID that are both smaller than the time ID and layer ID of the PH NAL unit. As a result, these parameter sets are not repeated within the picture or access unit. This order allows the PH712 to be resolved immediately. That is, parameter sets containing parameters related to the entire picture are placed before the PH NAL unit in the bitstream. Those containing parameters for only a portion of the picture are placed after the PH NAL unit.

[0159] As an alternative, the PH NAL unit follows picture-level parameter sets and prefix supplemental enhancement information (SEI) messages, or higher-level parameter sets such as DCI (also known as DPS), VPS, SPS, PPS, APS, and SEI messages.

[0160] Picture 714 is an array of lumina samples in monochrome format, or an array of lumina samples and two corresponding arrays of chroma samples in 4:2:0, 4:2:2, and 4:4:4 color formats. In the embodiment, each PU701 contains one and only one picture 714. Thus, within each PU701 there is only one PH712 and only one picture 714 corresponding to that PH712. That is, PU701 contains a single or isolated picture 714.

[0161] A picture 714 may be a frame or a field. However, in a single CVS 716, all pictures 714 are either frames or all pictures 714 are fields. A CVS 716 is a coded video sequence for each coded layer video sequence (CLVS) within the video bitstream 700. Notably, if the video bitstream 700 contains a single layer, the CVS 716 and the CLVS are the same. Only when the video bitstream 700 contains multiple layers (as shown, for example, in Figures 5 and 6), are the CVS 716 and the CLVS different.

[0162] Each picture 714 contains one or more slices 718. A slice 718 is an integer number of complete tiles or an integer number of consecutive complete CTU rows within a tile of a picture (e.g., picture 714). Each slice 718 is exclusively contained within a single NAL unit (e.g., VCL NAL unit). A tile (not shown) is a CTU of a rectangular region within a particular tile column and particular tile row in a picture (e.g., picture 714). A CTU (not shown) is a CTB of a chroma sample, two corresponding CTBs of a chroma sample in a picture having three sample arrays, or a CTB of a sample in a picture coded using a syntax structure used to code a monochromatic picture or three distinct color planes and samples. A CTB (not shown) may be an N×N block of samples for some value N. As a result, the division of components into a CTB is a partition. A block (not shown) is an M×N (M column × N row) array of samples (e.g., pixels), or an M×N array of transformation coefficients.

[0163] In this embodiment, each slice 718 includes a slice header 720. The slice header 720 is part of the coding slice 718 and contains data elements related to all the tiles or CTU rows in the tile represented within the slice 718. In other words, the slice header 720 contains information about the slice 718, such as the slice type and which reference picture is used.

[0164] The pictures 714 and their slices 718 contain data related to the image or video being encoded or decoded. Thus, the pictures 714 and their slices 718 may simply be referred to as the payload or data carried within the bitstream 700.

[0165] Those skilled in the art will understand that bitstream 700 may include other parameters and information relevant to the actual application.

[0166] Figure 8 shows an embodiment of decoding method 800 implemented by a video decoder (e.g., video decoder 400). Method 800 may be performed after the bitstream has been received directly or indirectly from a video encoder (e.g., video encoder 300). Method 800 improves the decoding process by prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in the output layer set (OLS) are either output layers or used as direct or indirect reference layers of output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Thus, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practice, the improved video coding process provides a better user experience when video is transmitted, received, and / or viewed.

[0167] In block 802, the video decoder receives a video bitstream containing a VPS (e.g., VPS704) and multiple layers (e.g., layer N631, layer N+1632, etc.). In this embodiment, none of the layers are output layers of at least one OLS (e.g., OLS1, OLS2, etc.) nor are direct reference layers of any other layers. That is, each layer of at least one OLS may be a direct reference layer of an output layer (e.g., layer N+2633 in OLS3) or any other layer (e.g., layer N+1632 and layer N631 in OLS3). Any layer that is not an output layer, or a layer that is directly referenced by another layer, is unnecessary and is therefore excluded from the CVS (e.g., 690) and / or video bitstream.

[0168] In the embodiment, the video decoder expects, based on VVC or any other standard as described above, that a layer is neither an output layer of at least one output layer set (OLS) nor a direct reference layer of any other layer. However, if the decoder determines that this condition is not true, the decoder may detect the error, signal the error, request that the received bitstream (or portion thereof) be retransmitted, or take any other corrective measures to ensure that a compliant bitstream is received.

[0169] In this embodiment, the VPS includes a layer used as a reference flag (e.g., LayerUsedAsRefLayerFlag) and a layer used as an output layer flag (e.g., LayerUsedAsOutputLayerFlag), where both the value of the layer used as the reference flag (e.g., [i]) and the value of the layer used as the output layer flag (e.g., [i]) are non-zero.

[0170] In the embodiment, each layer among multiple layers includes a set of video coding layer (VCL) network abstraction layer (NAL) units, all of which have a specific value for their layer identifier (ID), and associated non-VCL NAL units. In the embodiment, at least one OLS includes one or more output layers. In the embodiment, for each of the multiple layers in the VPS that have a specific value for their layer ID, at least one of the layers in the OLS should also have a specific value for its layer ID.

[0171] In block 804, the video decoder decodes a picture (e.g., picture 615) from one of several layers. In embodiments, the picture is contained in the output layer of at least one OLS. In embodiments, method 800 further includes the step of selecting an output layer from at least one OLS before the decoding step. In embodiments, method 800 further includes the step of selecting a picture from the output layer after the output layer has been selected.

[0172] Once the picture is decoded, it may be used to generate or produce an image or video sequence for display to a user on the display or screen of an electronic device (e.g., a smartphone, tablet, laptop, personal computer, etc.).

[0173] Figure 9 shows an embodiment of method 900 for encoding a video bitstream implemented by a video encoder (e.g., video encoder 300). Method 900 may be performed when a picture (e.g., from a video) is encoded into a video bitstream and sent to a video decoder (e.g., video decoder 400). Method 900 improves the decoding process by prohibiting unnecessary layers in a multi-layer video bitstream. That is, all layers included in the output layer set (OLS) are either output layers or used as direct or indirect reference layers of output layers. This avoids having irrelevant information in the coding process and improves coding efficiency. Thus, the coder / decoder (also known as "codec") in video coding is improved compared to current codecs. In practice, the improved video coding process provides a better user experience when video is transmitted, received, and / or viewed.

[0174] In block 902, the video encoder generates a VPS (e.g., VPS704) specifying multiple layers (e.g., N631, layer N+1 632, etc.) and one or more OLSs (e.g., OLS1, OLS2, etc.). In embodiments, each layer from the multiple layers is included in at least one of the OLSs specified by the VPS. In embodiments, no layer is an output layer of at least one OLS (e.g., OLS1, OLS2, etc.) nor a direct reference layer of any other layer. That is, each layer of at least one OLS may be an output layer (e.g., layer N+2 633 in OLS3) or a direct reference layer of any other layer (e.g., layer N+1 632 and layer N631 in OLS3). Any layer that is not an output layer, or a layer directly referenced by another layer, is unnecessary and is therefore excluded from the CVS (e.g., 690) and / or video bitstream. In embodiments, the video encoder is constrained so that no layer is an output layer of at least one output layer set (OLS) or a direct reference layer of any other layer. That is, the video encoder is required to encode so that no layer is an output layer of at least one output layer set (OLS) or a direct reference layer of any other layer. Such constraints or requirements ensure that the bitstream conforms to, for example, VVC or some other standard.

[0175] In the embodiment, each of one or more OLS includes one or more output layers, and each of the output layers includes one or more pictures. In the embodiment, each layer among the multiple layers includes a set of video coding layer (VCL) network abstraction layer (NAL) units, all of which have a specific value for a layer identifier (ID), and associated non-VCL NAL units.

[0176] In the embodiment, one of the OLS includes two output layers, one of which references the other. In the embodiment, the VPS includes a layer used as a reference flag and a layer used as an output layer flag, and the values ​​of the layer used as a reference flag and the layer used as an output layer flag are both non-zero.

[0177] In the embodiment, a hypothetical reference decoder (HRD) located within the encoder checks to ensure that all layers included in the output layer set (OLS) are either output layers or are used as direct or indirect reference layers of output layers. If the HRD finds any layers that are unnecessary as described in this specification, the HRD returns a compliance test error. In other words, the HRD compliance test ensures that no unnecessary layers exist. Thus, the encoder encodes in accordance with the requirement of no unused layers, but the HRD strengthens this requirement.

[0178] In block 904, the video encoder encodes multiple layers and VPS into a video bitstream. In block 906, the video encoder stores the video bitstream for communication with the video decoder. The video bitstream may be stored in memory until it is transmitted to the video decoder. Upon receipt by the video decoder, the encoded video bitstream may be decoded to produce or generate an image or video sequence for display to a user on the display or screen of an electronic device (e.g., a smartphone, tablet, laptop, personal computer, etc.) (as described above, for example).

[0179] Figure 10 is a schematic diagram of a video coding device 1000 (e.g., a video encoder 300 or a video decoder 400) according to an embodiment of the present disclosure. The video coding device 1000 is suitable for carrying out embodiments of the disclosure described herein. The video coding device 1000 includes an ingress port 1010 and receiver units (Rx) 1020 for receiving data, a processor, logic unit, or central processing unit (CPU) 1030 for processing data, transmitter units (Tx) 1040 and an egress port 1050 for transmitting data, and a memory 1060 for storing data. The video coding device 1000 may also include optical-to-electrical (OE) components and electrical-to-optical (EO) components for egressing or ingressing optical or electrical signals, connected to the ingress port 1010, receiver unit 1020, transmitter unit 1040, and egress port 1050.

[0180] The processor 1030 is implemented by hardware and software. The processor 1030 may be implemented as one or more CPU chips, cores (e.g., a multi-core processor), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 1030 communicates with the ingress port 1010, the receiver unit 1020, the transmitter unit 1040, the egress port 1050, and the memory 1060. The processor 1030 includes a coding module 1070. The coding module 1070 implements the embodiments of the disclosure described above. For example, the coding module 1070 implements, processes, prepares, or provides various codec functions. What is included in the coding module 1070 therefore provides substantial improvements to the functionality of the video coding device 1000 and results in the conversion of the video coding device 1000 to different states. Alternatively, the coding module 1070 is implemented as an instruction stored in memory 1060 and executed by processor 1030.

[0181] The video coding device 1000 may also include an input and / or output (I / O) device 1080 for communicating data to and from the user. The I / O device 1080 may include output devices such as a display for showing video data, a speaker for outputting audio data, etc. The I / O device 1080 may also include input devices such as a keyboard, mouse, trackball, etc., and / or corresponding interfaces for interfaceing with such output devices.

[0182] Memory 1060 includes one or more disks, tape drives, and solid drives, and may be used as an overflow data storage device for storing a program when it is selected for execution and for storing instructions and data read during program execution. Memory 1060 may be volatile and / or non-volatile, and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and / or static random-access memory (SRAM).

[0183] Figure 11 is a schematic diagram of an embodiment of the coding means 1100. In this embodiment, the coding means 1100 is implemented within a video coding device 1102 (e.g., a video encoder 300 or a video decoder 400). The video coding device 1102 includes a receiving means 1101. The receiving means 1101 is configured to receive a picture to be coded or a bitstream to be decoded. The video coding device 1102 includes a transmitting means 1107 coupled to the receiving means 1101. The transmitting means 1107 is configured to transmit a bitstream to a decoder or transmit a decoded image to a display means (e.g., one of the I / O devices 1080).

[0184] The video coding device 1102 includes a storage means 1103. The storage means 1103 is coupled to at least one of the receiving means 1101 or the transmitting means 1107. The storage meaning 1103 is configured to store instructions. The video coding device 1102 further includes a receiving means 1105. The processing means 1105 is coupled to the storage means 1103. The processing means 1105 is configured to execute instructions stored in the storage means 1103 in order to perform the method disclosed herein.

[0185] Furthermore, it should be understood that the steps of the exemplary methods described herein do not necessarily have to be performed in the order described, and the order of the steps in such methods should be understood as merely an example. Similarly, additional steps may be included in such methods, and certain steps may be omitted or combined in methods according to various embodiments of this disclosure.

[0186] While several embodiments are provided in this disclosure, it should be understood that the systems and methods of the disclosure can be implemented in many other specific forms without departing from the spirit or scope of this disclosure. The examples of the invention should be considered for illustrative purposes only and not limiting, and are not intended to limit the details given herein. For example, various elements or components may be combined or integrated into another system, or certain functions may be omitted or not implemented.

[0187] Furthermore, the technologies, systems, subsystems, and methods described and shown in various embodiments may be combined with or integrated with other systems, modules, technologies, or methods without departing from the scope of this disclosure. Other items shown or discussed as being combined with, directly combined with, or communicating with one another may be indirectly combined with or communicating with each other, whether electrically, mechanically, or otherwise, through some interface, device, or intermediate component. Other examples of modifications, substitutions, and alterations will be seen by those skilled in the art and may be made without departing from the spirit and scope of the disclosure herein.

Claims

1. A decoding method performed by a video decoder, the method is The video decoder receives a video bitstream comprising a video parameter set (VPS) and multiple layers, wherein none of the layers are output layers of at least one output layer set (OLS) or direct reference layers of any other layer, the VPS includes ols_mode_idc and vps_max_layers_minus1, ols_mode_idc equal to 0, the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices from 0 to i (including the boundary), and for each OLS, only the top layer of the OLS is output. The video decoder includes the step of decoding a picture from one of the plurality of layers, method.

2. A method of encoding performed by a video encoder, wherein the method is The video encoder generates a video parameter set (VPS) specifying a plurality of layers and at least one output layer set (OLS), wherein the video encoder is constrained so that no layer is an output layer of the at least one OLS or a direct reference layer of any other layer, the VPS includes ols_mode_idc and vps_max_layers_minus1, where ols_mode_idc is equal to 0, the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices from 0 to i (including the boundary), and for each OLS, only the top layer of the OLS is output. The video encoder includes the step of encoding the plurality of layers and the VPS into a video bitstream, method.

3. A decoding device, said decoding device is A receiver configured to receive a video bitstream containing a video parameter set (VPS) and multiple layers, wherein none of the layers are output layers of at least one OLS or direct reference layers of any other layer, the VPS contains ols_mode_idc and vps_max_layers_minus1, where ols_mode_idc equal to 0 specifies that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS contains layers with layer indices from 0 to i (including the boundary), and for each OLS, only the top layer of the OLS is output; A memory connected to the receiver, comprising a memory for storing instructions, A processor coupled to the memory, configured to execute the instruction to cause the decoding device to decode a picture from one of the plurality of layers and to obtain the decoded picture, Decryption device.

4. An encoding device, said encoding device, Memory containing instructions, A processor coupled to the memory, The processor executes the instruction and sends it to the encoding device, The method involves generating a video parameter set (VPS) specifying multiple layers and one or more output layer sets (OLS), wherein the encoding device is constrained such that no layer is an output layer of at least one OLS or a direct reference layer of any other layer, the VPS includes ols_mode_idc and vps_max_layers_minus1, where ols_mode_idc equal to 0 specifies that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices from 0 to i (including the boundary), and for each OLS, only the top layer of the OLS is output. The system is configured to encode the aforementioned multiple layers and the VPS into a video bitstream, Encoding device.

5. A coding device, said coding device, A receiver configured to receive and encode a picture, or to receive and decode a bitstream, A transmitter coupled to the receiver, configured to transmit the bitstream to a decoder or to transmit the decoded image to a display, A memory connected to at least one of the receiver or the transmitter, configured to store instructions, A processor coupled to the memory, configured to execute the instructions stored in the memory to perform the methods of claim 1 and claim 2, Coding device.

6. A system, and said system is Encoder and The encoder includes a decoder that communicates with the encoder, wherein the encoder or decoder includes a decoding device, encoding device, or coding device as described in any one of claims 3 to 5. system.

7. An encoder comprising a processing circuit for performing the method according to claim 2.

8. A decoder comprising a processing circuit for performing the method according to claim 1.

9. A computer program comprising program code for performing the method described in claim 1 or 2.

10. A terminal comprising one or more processors, memory, and a communication interface, wherein the memory and the communication interface are connected to the one or more processors, the terminal communicates with another device via the communication interface, the memory is configured to store computer program code, the computer program code includes instructions, and when the one or more processors execute the instructions, the terminal performs the method according to claim 1 or 2. Terminal.

11. A device for storing a bitstream, the device comprising at least one storage medium and at least one communication interface, The at least one communication interface is configured to receive or transmit the bitstream, and the at least one storage medium is configured to store the bitstream. The bitstream includes a video parameter set (VPS) and multiple layers, none of which are output layers of at least one output layer set (OLS) or direct reference layers of any other layer, the VPS includes ols_mode_idc and vps_max_layers_minus1, where ols_mode_idc equal to 0 specifies that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices from 0 to i (including the boundary), and for each OLS, only the top layer of the OLS is output. Device.

12. A method for storing a bitstream, the method is The steps include receiving or transmitting a bitstream via a communication interface, A step of storing the bitstream in one or more storage media, wherein the bitstream includes a video parameter set (VPS) and a plurality of layers, none of which are output layers of at least one output layer set (OLS) or direct reference layers of any other layer, the VPS includes ols_mode_idc and vps_max_layers_minus1, where ols_mode_idc equal to 0 means that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers having layer indices from 0 to i (including the boundary), and for each OLS, it is specified that only the top layer of the OLS is output. method.

13. A device for transmitting a bitstream, said device, At least one storage medium configured to store at least one bitstream, wherein the bitstream includes a video parameter set (VPS) and a plurality of layers, none of which are output layers of at least one output layer set (OLS) or direct reference layers of any other layer, the VPS includes ols_mode_idc and vps_max_layers_minus1, where ols_mode_idc equal to 0 specifies that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers having layer indices from 0 to i (including the boundary), and for each OLS, only the top layer of the OLS is output, the at least one storage medium, The system includes at least one processor configured to acquire one or more bitstreams from one of the at least one storage mediums and to transmit the one or more bitstreams to a destination device, Device.

14. A method for transmitting a bitstream, the method is A step of storing at least one bitstream in at least one storage medium, wherein the bitstream includes a video parameter set (VPS) and a plurality of layers, none of which are output layers of at least one output layer set (OLS) or direct reference layers of any other layers, the VPS includes ols_mode_idc and vps_max_layers_minus1, where ols_mode_idc is equal to 0, the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices from 0 to i (including the boundary), and for each OLS, only the top layer of the OLS is output. The steps include obtaining one or more bitstreams from one of the at least one storage mediums, The process includes the step of transmitting one or more bitstreams to a destination device, method.

15. A system for processing a bitstream, the system including an encoding device, one or more storage devices, and a decoding device, The encoding device is configured to acquire a video signal and encode the video signal to acquire one or more bitstreams, the bitstreams comprising a video parameter set (VPS) and multiple layers, none of which are output layers of at least one output layer set (OLS) or direct reference layers of any other layer, the VPS comprising ols_mode_idc and vps_max_layers_minus1, where ols_mode_idc equal to 0 specifies that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS comprises layers with layer indices from 0 to i (including the boundary), and for each OLS, only the top layer of the OLS is output. The one or more storage devices are used to store the one or more bitstreams. The decoding device is used to decode the one or more bitstreams. system.

Citation Information

Patent Citations

  • Image decoder and image encoder

    JP2015195543A

  • Method and an apparatus and a computer program for encoding media content

    US20170347026A1

  • Image decoding device and image decoding method

    WO2015137432A1