Apparatus and method for inverse quantization
By employing separate partition trees for luminance and chrominance components and using existing QP values, the method addresses the challenge of balancing efficiency and complexity in video compression, enhancing picture quality and reducing computational overhead.
Patent Information
- Application Number
- JP2025090079
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2018-10-15
- Filing Date
- 2025-05-29
- Publication Date
- 2025-08-27
AI Technical Summary
Existing video compression technologies face challenges in balancing compression efficiency and computational complexity, particularly in handling quantization noise and artifacts in video coding standards like H.265/HEVC, which impact picture quality and coding complexity.
The method involves separate partition trees for luminance and chrominance components, using existing quantization parameter (QP) values from a bitstream to determine QP values for chrominance components, reducing computational complexity and enhancing efficiency through boundary partition processing.
This approach reduces coding complexity and improves picture quality by efficiently determining QP values for chrominance components, aligning with the goals of video coding standards to minimize redundancy and computational load.
Smart Images

Figure 2025125560000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to the technical field of image and / or video decoding, and in particular to an apparatus and method for inverse quantization. [Background technology]
[0002] Digital video communication and storage applications are implemented by a wide range of digital devices, such as digital cameras, cellular wireless telephones, laptops, broadcasting systems, video teleconferencing systems, etc. One of the most important and challenging tasks in these applications is video compression. The task of video compression is complex and constrained by two conflicting parameters: compression efficiency and computational complexity. Video coding standards, such as ITU-T H.264 / AVC or ITU-T H.265 / HEVC, offer a good trade-off between these parameters. Therefore, support for video coding standards is a mandatory requirement for almost any video compression application.
[0003] Video compression techniques such as inter-prediction, intra-prediction, and loop filtering have proven effective and have therefore been adopted in various video coding standards such as H.264 / AVC and H.265 / HEVC.
[0004] The basic processing unit of video compression is usually called a macroblock, which is a portion of a picture having a size, for example, 16x16 or 64x64 pixels. In the latest video coding standard, H.265 / HEVC, the so-called coding tree unit (CTU) is used as the basic processing unit. A CTU is also called a maximal coding unit (LCU). In H.265 / HEVC, a CTU consists of one luma CTB and two chroma CTBs, which represent the luminance and chrominance video signal portions, e.g., Y, Cb, and Cr components, respectively. CTUs are processed one by one in scan order from the upper-left corner to the lower-right corner of the picture. Each CTU may be further divided into smaller coding units (CUs), for example, by using quadtree partitioning. Each CU may be further divided into either smaller CUs or prediction units (PUs). PUs may be intra- or inter-predicted depending on the type of processing applied to the pixels of the PU. In the case of inter prediction, a PU represents an area of pixels processed by motion compensation using a motion vector specified for the PU. For intra prediction, neighboring pixels of neighboring blocks are used as reference samples for predicting the current block. A PU specifies a prediction mode selected from a set of intra prediction modes for all transform units (TUs) included in this PU. TUs can have different sizes (e.g., 4x4, 8x8, 16x16, and 32x32 pixels) and can be processed in different ways. For TUs, transform coding is performed, i.e., the prediction error is transformed by a discrete cosine transform or a discrete sine transform (in the HEVC / H.265 standard, it is applied to intra-coded blocks) and then quantized. Therefore, the reconstructed pixels contain quantization noise (which can appear as, for example, inter-unit blockiness, ringing artifacts associated with sharp edges, etc.), which in-loop filters such as DBF, SAO, and ALF attempt to suppress.The use of sophisticated predictive coding (e.g., motion compensation and intra prediction) and partitioning techniques (e.g., QT for CU and PU and RQT for TU in the HEVC / H.265 standard, and Multiple Tree (MT) for VVC reference software starting from versions BMS-1.0 and VTM-1.0) allows for significant reduction of redundancy in the PU. The fundamental difference between the QT and MT partitioning mechanisms is that the latter allows for rectangular blocks by using binary and ternary tree-based partitioning, as well as square blocks by using a quadtree approach. As video production and consumption become increasingly commonplace, video traffic is the largest load on communication networks and drivers for increasing data storage demands. Therefore, one of the goals of most video coding standards is to reduce coding complexity compared to their predecessors without sacrificing picture quality. Summary of the Invention
[0005] Embodiments of the present application provide apparatus and methods for encoding and decoding according to the independent claims.
[0006] These and other objects are achieved by the subject matter of the independent claims. Further embodiments are evident from the dependent claims, the description and the drawings.
[0007] Particular embodiments are outlined in the accompanying independent claims, with other embodiments in the dependent claims.
[0008] An apparatus and method for boundary partitions are disclosed. The apparatus and method use specific boundary partition processing to reduce coding complexity. Boundary partition processing is also called picture or image boundary handling.
[0009] According to a first aspect of the present invention, there is provided a method for inverse quantization of a current block of a picture. The picture has a luminance component and a chrominance component, and the luminance component and the chrominance component are divided into multiple blocks (e.g., coding units, CUs) by separate partition trees. The method includes: a decoder obtaining one or more existing quantization parameter (QP) values from a (e.g., received) bitstream, where the one or more existing QP values relate to a current block (i.e., a block being processed) in the chrominance component; determining a QP value for the current block in the chrominance component based on the one or more existing QP values; and performing inverse quantization on the current block in the chrominance component by using the determined QP value.
[0010] A video image may be divided into a luminance (or luma) component and a chrominance (or chroma) component. The luminance or luma component represents the brightness in the image (the "black and white" or colorless portions of the image), and the chrominance or chroma component represents the color information of the image. By way of example only, if a picture or image is represented in the color space of [Y, Cb, and Cr], the Y component is the luminance (or luma) component, and Cb and Cr are the chrominance or chroma components.
[0011] The luminance and chrominance components are divided into blocks by separate partition trees, i.e., the luminance and chrominance components are partitioned separately. Different partition trees are known, such as quad-tree (QT), binary-tree (BT), ternary-tree (TT), and any combination of the above partition trees, such as quad-tree plus binary-tree (QTBT), or quad-tree plus binary-tree or ternary-tree (QT-BT / TT).
[0012] The phrase "one or more existing QP values are associated with the current block in the chrominance component" corresponds to existing QP values associated with the current block in the chrominance component. By way of example only, the existing QP values include the QP value of a co-located block in the luminance component, the existing QP values of one or more neighboring blocks of the co-located block in the luminance component, and the existing QP values of one or more neighboring blocks of the current block in the chrominance component.
[0013] A bitstream may be a received bitstream, which here means a bitstream received at a decoder for processing. Reception here relates to any kind of reception, e.g. from storage or from a network.
[0014] For a block in the chrominance component of a picture, the quantization parameter of that block in the chrominance component may be determined by one or more existing quantization parameter QP values obtained from the received bitstream, which provides an efficient method for determining the quantization parameter for that block in the chrominance component and reduces the processing overload of the decoder for determining the quantization parameter for each block in the chrominance component.
[0015] According to an example of the first aspect of the present invention, the one or more existing QP values include at least one of the following: a QP value of a co-located block in the luminance component; existing QP values of one or more neighboring blocks of the co-located block in the luminance component; and existing QP values of one or more neighboring blocks of the current block in the chrominance component.
[0016] This provides an efficient way to define existing QP values and determine QP values for blocks in the chrominance components of a picture.
[0017] According to another example of the first aspect of the present invention, the method further comprises determining a QP value for the current block in the chrominance component based on a QP value of a co-located block in the luminance component.
[0018] The term "co-located block in the luminance component" refers to a block in the luminance component that is co-located with a block in the chrominance component, where the term "co-located" refers to the mapping relationship between the luminance and chrominance components of a picture.
[0019] This example provides an easy way to determine the QP value of a block in the chrominance component: since the luminance and chrominance components of a picture are related, it is therefore an easy and straightforward way to consider the QP value of a co-located block in the luminance component as the QP value of that block in the chrominance component.
[0020] The step of determining a QP value for a current block in the chrominance component based on the QP value of a block at the same position in the luminance component includes, according to any of the above examples and the first aspect, determining a luminance block at the same position as a sample at a particular position in the current chrominance block, extracting a QP value (e.g., QpY_basic) of the determined luminance block, and determining a QP value for the current block in the chrominance component based on the QP value (e.g., QpY_basic) of the determined luminance block.
[0021] Determining co-located blocks according to specific samples allows for a reliable and unambiguous yet uncomplicated implementation, even when luma and chroma blocks are allowed to have different partitions.
[0022] In the example, the sample at the particular position is the top left sample in the bottom right quarter of the current chrominance block.
[0023] Such a particular location roughly corresponds to the center of the block and therefore provides a good estimate of the QP of the co-located block.
[0024] Alternatively, or in addition, the QP value for the current block in the chrominance component can be calculated using the following formula: Qp'Cb=QpCb+QpBdOffsetC+delta_qp_c, Qp'Cr=QpCr+QpBdOffsetC+delta_qp_c, or determined according to a new formula derived from the following formula: QpCb and QpCr are obtained from qPiCb and qPiCr parameters obtained based on the determined QP value of the luminance block by applying a chroma QP mapping function. In particular, in some implementations, qPiCb and qPiCr are indices in a chroma mapping function (table) calculated based on QpY_basic. QpY_basic corresponds to the determined QP value of the luminance block.
[0025] According to an example implementation, the method is applied separately for luma and chroma planes based on two picture parameter set PPS-based control flags, where if a first control flag is equal to true, the method is applied for luma QP derivation, or if the first control flag is equal to false, the method is not applied for luma QP derivation, and / or if a second control flag is equal to true, the method is applied for chroma QP derivation, or if the second control flag is equal to false, the method is not applied for chroma QP derivation.
[0026] This facilitates the provision of an efficient and scalable syntax for the bitstream.
[0027] According to an example of the first aspect of the present invention, the method further comprises determining a QP value for the current block in the chrominance component based on one or more existing QP values and at least one of a next chrominance delta QP value conveyed in the received bitstream or a chrominance QP offset value conveyed in the received bitstream.
[0028] According to an example of the first aspect of the present invention, the method further comprises the steps of obtaining a partition depth value of the current block, and if the partition depth value is below a threshold, determining a QP value for the current block in the chrominance component based on one or more existing QP values and a chrominance delta QP value conveyed in the received bitstream.
[0029] In this way, it is not necessary to apply the method to blocks with depth values above the threshold, which reduces the computational complexity.
[0030] According to an example of the first aspect of the present invention, the threshold is determined based on a predefined number or a number conveyed in a parameter set.
[0031] For example, this number may be predefined by a programmer or may be conveyed in a parameter set, such as a picture parameter set (PPS) or a sequence parameter set (SPS).
[0032] According to an example of the first aspect of the present invention, the luminance and chrominance components are partitioned into multiple blocks (eg, coding units, CUs) by separate partition trees.
[0033] It is recognized that a harmonized method for inverse quantization is provided, which applies not only to single partition (ST) mode (i.e., the luma and chroma components are partitioned by a single partition), but also to dual partition (DT) mode (i.e., the luma and chroma components are partitioned independently by separate partition trees).
[0034] According to an embodiment of the present invention, there is provided a decoding device having processing circuitry for performing the method of the first aspect and any one of the examples of the first aspect.
[0035] According to a second aspect, there is provided a method for quantization of a current block of a picture, the method being executed by an encoder, the picture having a luminance component and a chrominance component, the luminance component and / or the chrominance component being divided into a plurality of blocks, the method comprising: performing quantization on the current block in the chrominance component by using a determined QP value; obtaining one or more existing quantization parameter QP values and including the one or more existing QP values in a bitstream, where the one or more existing QP values are related to the current block in the chrominance component; determining QP parameters for the current block in the chrominance component based on the one or more existing QP values and the determined QP value; and including the QP parameters in the bitstream.
[0036] According to an example of the second aspect of the present invention, the one or more existing QP values include at least one of the following: a QP value of a co-located block in the luminance component; existing QP values of one or more neighboring blocks of the co-located block in the luminance component; and existing QP values of one or more neighboring blocks of the current block in the chrominance component.
[0037] According to another example of the second aspect of the present invention, determining the QP parameters comprises determining QP parameters for the current block in the chrominance component based on QP values of a co-located block in the luminance component.
[0038] The step of determining QP parameters for a current block in the chrominance component based on the QP value of a co-located block in the luminance component includes the steps of: retrieving a QP value of a luminance block that is co-located with a sample at a specific position in the current chrominance block; and determining a QP value for the current block in the chrominance component based on the determined QP value of the luminance block, according to any of the above examples and the second aspect. As an example of implementation, the step of determining QP parameters for a current block in the chrominance component based on the QP value of a co-located block in the luminance component includes the steps of: determining a luminance block that is co-located with a sample at a specific position in the current chrominance block; retrieving a QP value (e.g., QpY_basic) of the determined luminance block; and determining QP parameters for the current block in the chrominance component based on the QP value (e.g., QpY_basic) of the determined luminance block.
[0039] In the example, the sample at the particular position is the top left sample in the bottom right quarter of the current chrominance block.
[0040] Alternatively, or in addition, the QP value for the current block in the chrominance component can be calculated using the following formula: Qp'Cb=QpCb+QpBdOffsetC+delta_qp_c, Qp'Cr=QpCr+QpBdOffsetC+delta_qp_c, or determined according to a new formula derived from the following formula: QpCb and QpCr are obtained from the qPiCb and qPiCr parameters obtained based on the determined QP value of the luminance block by applying a chroma QP mapping function.
[0041] According to an example implementation, the method is applied separately for luma and chroma planes based on two picture parameter set PPS-based control flags, where if a first control flag is equal to true, the method is applied for luma QP derivation, or if the first control flag is equal to false, the method is not applied for luma QP derivation, and / or if a second control flag is equal to true, the method is applied for chroma QP derivation, or if the second control flag is equal to false, the method is not applied for chroma QP derivation, and the method further comprises the step of including the first flag and / or the second flag in the bitstream.
[0042] According to an example of the second aspect of the present invention, the method further comprises determining a QP parameter for the current block in the chrominance component based on one or more existing QP values and at least one of a next chrominance delta QP value included in the bitstream or a next chrominance QP offset value included in the bitstream, and the method may further comprise inserting the delta QP or the QP offset into the bitstream.
[0043] According to an example of the second aspect of the present invention, the method further comprises the steps of determining (and optionally including in the bitstream) a partition depth value for the current block, and if the partition depth value is below a threshold, determining a QP value for the current block in the chrominance component based on one or more existing QP values and the chrominance delta QP value included in the bitstream.
[0044] According to an example of the second aspect of the present invention, the threshold is determined based on a predefined number or a number conveyed in a parameter set.
[0045] For example, this number may be predefined by a programmer or may be conveyed in a parameter set, such as a picture parameter set (PPS) or a sequence parameter set (SPS).
[0046] According to an example of the second aspect of the present invention, the luminance and chrominance components are partitioned into blocks (eg, coding units, CUs) by separate partition trees.
[0047] According to a third aspect of the present invention, there is provided a computer program product having a program code for performing the method of any one of the first aspect and examples of the first aspect when the computer program is run on a computing device. The computer program may be stored on a non-transitory medium.
[0048] According to a fourth aspect of the present invention, there is provided a decoding apparatus for a boundary partition of a current block of a picture, the decoding apparatus including one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing programming for execution by the processors, the programming, when executed by the processors, configuring the decoding apparatus to perform the method of any one of the first aspect and examples of the first aspect.
[0049] According to a fifth aspect, there is provided an encoding apparatus for a boundary partition of a current block of a picture, the encoding apparatus having one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing programming for execution by the processors, the programming, when executed by the processors, configuring the encoding apparatus to perform the method of any one of the second aspect and examples of the second aspect.
[0050] According to a sixth aspect, there is provided an apparatus for inverse quantization of a current block of a picture, the picture having a luminance component and a chrominance component, the luminance component and / or the chrominance component being divided into a plurality of blocks, the apparatus comprising: a bitstream parser (1110) that obtains one or more existing quantization parameter QP values from a bitstream, the one or more existing QP values being related to the current block in the chrominance component; a QP determination unit (1120) that determines a QP value for the current block in the chrominance component based on the one or more existing QP values; and an inverse quantizer (1130) that performs inverse quantization on the current block in the chrominance component by using the determined QP value.
[0051] According to a seventh aspect, there is provided an apparatus for quantization of a current block of a picture, the picture having a luminance component and a chrominance component, the luminance component and / or the chrominance component being divided into a plurality of blocks, the apparatus comprising: a quantizer (1210) that performs quantization on the current block in the chrominance component by using a determined QP value; a fetch unit (1220) that retrieves one or more existing quantization parameter QP values and includes the one or more existing QPs in a bitstream, the one or more existing QP values being related to the current block in the chrominance component; a QP determination unit (1230) that determines QP parameters for the current block in the chrominance component based on the one or more existing QP values and the determined QP value; and a bitstream generation unit (1240) that includes the QP parameters in the bitstream.
[0052] According to an eighth aspect, there is provided an integrated circuit embodying any of the above apparatus.
[0053] Embodiments of the second, third and fourth aspects correspond to respective embodiments of the first aspect. Accordingly, embodiments of the method have features of corresponding embodiments of the decoding device, and vice versa. The decoding device may be implemented as a chipset for decoding an encoded video bitstream.
[0054] The advantages of the method according to the first aspect are the same as those for the corresponding embodiments of the decoding device according to the fourth and sixth aspects.
[0055] In the following, exemplary embodiments will be described in more detail with reference to the accompanying figures and drawings. [Brief explanation of the drawings]
[0056] [Figure 1A] 1 is a block diagram illustrating an example of a video coding system configured to implement embodiments of the present invention. [Figure 1B] FIG. 2 is a block diagram illustrating another example of a video coding system configured to implement embodiments of the present invention. [Figure 2] 1 is a block diagram illustrating an example of a video encoder configured to implement embodiments of the present invention. [Figure 3] 1 is a block diagram illustrating an example structure of a video decoder configured to implement embodiments of the present invention. [Figure 4] FIG. 1 is a block diagram illustrating an example of an encoding device or a decoding device. [Figure 5] FIG. 10 is a block diagram illustrating another example of an encoding device or a decoding device. [Figure 6A] FIG. 1 is a schematic diagram illustrating a quadtree (QT) partitioning according to an embodiment of the present disclosure. [Figure 6B] FIG. 2 is a schematic diagram illustrating a binary tree (BT) division in the vertical direction according to an embodiment of the present disclosure. [Figure 6C] FIG. 2 is a schematic diagram illustrating a binary tree (BT) division in the horizontal direction according to an embodiment of the present disclosure. [Figure 6D]FIG. 2 is a schematic diagram illustrating a ternary tree (TT) division in the vertical direction according to an embodiment of the present disclosure. [Figure 6E] FIG. 2 is a schematic diagram illustrating a ternary tree (TT) division in the horizontal direction according to an embodiment of the present disclosure. [Figure 7A] FIG. 1 is a schematic diagram showing the nominal vertical and horizontal positions of 4:2:0 luma and chroma samples within a picture. [Figure 7B] FIG. 1 is a schematic diagram showing the nominal vertical and horizontal positions of 4:2:2 luma and chroma samples within a picture. [Figure 7C] FIG. 1 is a schematic diagram showing the nominal vertical and horizontal positions of 4:4:4 luma and chroma samples within a picture. [Figure 8] 1 is a schematic diagram illustrating a point mapping from chrominance (or chroma) partitioning to luminance (or luma) partitioning. [Figure 9] 10 is an exemplary flowchart illustrating a procedure for determining QP values for blocks in a chroma component (i.e., chroma block QP values). [Figure 10] 10 is an exemplary flowchart illustrating a procedure for determining QP parameters to be inserted into the bitstream for a current block. [Figure 11] FIG. 1 is a block diagram illustrating an exemplary apparatus for inverse quantization that may be part of a decoder. [Figure 12] FIG. 1 is a block diagram illustrating an exemplary apparatus for quantization that may be part of an encoder. [Figure 13] 1 is a block diagram showing an example of the structure of a content supply system that realizes a content distribution service. [Figure 14] FIG. 2 is a block diagram illustrating the structure of an example terminal device. DETAILED DESCRIPTION OF THE INVENTION
[0057] Hereinafter, the same reference signs refer to the same or at least functionally equivalent features, unless expressly stated otherwise.
[0058] In the following description, reference is made to the accompanying figures which form part of this disclosure and which show, by way of illustration, specific aspects of embodiments of the invention or in which embodiments of the invention may be used. It is understood that embodiments of the invention may be used in other ways and may involve structural or logical changes that are not shown. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
[0059] For example, it is understood that disclosure related to a described method also applies to a corresponding device or system configured to perform the method, and vice versa. For example, when one or more specific method steps are described, a corresponding device may include one or more units, e.g., functional units, to perform the described one or more method steps (e.g., one unit performs one or more steps, or multiple units each perform one or more of the multiple steps), even if such one or more units are not explicitly described or shown. On the other hand, for example, when a specific apparatus is described based on one or more units, e.g., functional units, a corresponding method may include one or more steps to perform the functionality of one or more units (e.g., one step performs the functionality of one or more units, or multiple steps each perform the functionality of one or more of the units), even if such one or more steps are not explicitly described or shown. Furthermore, it is understood that various example embodiments and / or aspects described herein may be combined with each other, unless specifically stated otherwise.
[0060] Video coding typically refers to the processing of a series of pictures that form a video or video sequence. Instead of the term "picture," the terms "frame" or "image" are sometimes used synonymously in the field of video coding. Video coding, as used in this application (or this disclosure), refers to either video encoding or video decoding. Video encoding is performed at the source side and typically involves processing original video pictures (e.g., by compression) to reduce the amount of data needed to represent the video picture (for more efficient storage and / or transmission). Video decoding is performed at the destination side and typically involves the reverse process compared to the encoder to reconstruct the video picture. Embodiments that refer to "coding" a video picture (or, as described below, pictures in general) should be understood to relate to either "encoding" or "decoding" a video sequence. The combination of the encoding and decoding parts is also referred to as CODEC (Coding and Decoding).
[0061] In the case of lossless video coding, the original video picture can be reconstructed, i.e., the reconstructed video picture has the same quality as the original video picture (assuming there is no transmission or other data loss during storage or transmission). In the case of lossy video coding, further compression, for example by quantization, is performed to reduce the amount of data representing the video picture, and the video picture cannot be perfectly reconstructed at the decoder, i.e., the quality of the reconstructed video picture is lower or worse than the quality of the original video picture.
[0062] Some video coding standards after H.261 belong to the group of "lossy hybrid video codecs" (i.e., they combine spatial and temporal prediction in the sample domain with 2D transform coding to apply quantization in the transform domain). Each picture of a video sequence is usually divided into a set of non-overlapping blocks, and coding is usually performed at the block level. That is, at the encoder, video is usually processed, i.e., encoded, at the block (video block) level, for example, by using spatial (intra-picture) prediction and temporal (inter-picture) prediction to generate a predictive block, subtracting the predictive block from a current block (the block currently being processed / to be processed) to obtain a residual block, transforming the residual block, and quantizing (compressing) the residual block in the transform domain to reduce the amount of data to be transmitted; while at the decoder, a reverse process compared to the encoder is partially applied to the coded or compressed block to reconstruct the current block for display. Furthermore, the encoder replicates the decoder's processing loop, so that both generate the same predictions (e.g., intra- and inter-predictions) and / or reconstructions for processing, i.e., coding, subsequent blocks.
[0063] As used herein, the term "block" may refer to a portion of a picture or a frame. For ease of description, embodiments of the present invention are described herein with reference to High-Efficiency Video Coding (HEVC) or Versatile video coding (VVC) reference software developed by the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Motion Picture Experts Group (MPEG) Joint Collaboration Team on Video Coding (JCT-VC). Those skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC. A block may refer to a CU, PU, and TU. In HEVC, a CTU is divided into CUs using a quadtree structure, represented as a coding tree. The decision of whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU may be further divided into one, two, or four PUs according to the PU partition type. Within a PU, the same prediction process is applied, and related information is sent to the decoder on a PU-by-PU basis. After obtaining the residual block by applying the prediction process based on the PU partition type, the CU can be divided into transform units (TUs) according to another quadtree structure similar to the coding tree for CUs. In the latest developments in video compression technology, the quadtree and binary tree (QTBT) partitioning frame is used to divide coding blocks. In the QTBT block structure, CUs can have either a square or rectangular shape. For example, coding tree units (CTUs) are first divided according to a quadtree structure. The quadtree leaf nodes are further divided according to a binary tree structure. The binary tree leaf nodes are called coding units (CUs), and their segmentation is used for prediction and transform processing without further partitioning. This means that CUs, PUs, and TUs have the same block size in the QTBT coding block structure.At the same time, multiple partitions, for example ternary tree partitions, have also been proposed for use with the QTBT block structure.
[0064] In the following, embodiments of the encoder 20, the decoder 30 and the coding system 10 are described on the basis of FIGS.
[0065] 1A is a conceptual or schematic block diagram illustrating an example coding system 10, e.g., a video coding system 10, that may utilize the techniques of the present disclosure. An encoder 20 (e.g., video encoder 20) and a decoder 30 (e.g., video decoder 30) of video coding system 10 represent examples of devices that may be configured to perform techniques according to various examples described herein. As shown in FIG. 1A, coding system 10 includes a source device 12 configured to provide coded data 13, e.g., coded pictures 13, to a destination device 14 that decodes coded data 13.
[0066] The source device 12 comprises an encoder 20 and may additionally, i.e. optionally, comprise a picture source 16 , a pre-processing unit 18 , for example a picture pre-processing unit 18 , and a communication interface or unit 22 .
[0067] The picture source 16 may comprise or be, for example, any kind of picture capture device for capturing real-world pictures and / or any kind of picture or comment (for coding of screen content, some text on the screen is also considered as part of the picture or image to be coded) generation device, such as a computer graphics processor for generating computer-animated pictures, or any kind of device for obtaining and / or supplying real-world pictures, computer-animated pictures (e.g., screen content, virtual reality (VR) pictures) and / or any combination thereof (e.g., augmented reality (AR) pictures).
[0068] A (digital) picture can be, or can be considered as, a two-dimensional array or matrix of samples with intensity values. The samples in the array can also be called pixels (short for picture element) or pels. The number of samples in the horizontal and vertical directions (or axes) of the array or picture defines the size and / or resolution of the picture. For color representation, three color components are usually used; that is, a picture can be represented by or contain three sample arrays. In an RGB format or color space, a picture has corresponding red, green, and blue sample arrays. However, in video coding, each pixel is usually represented in a luminance / chrominance format or color space, e.g., YCbCr, with a luminance component denoted by Y (sometimes L is used instead) and two chrominance components denoted by Cb and Cr. The luminance (or luma for short) component Y represents brightness or gray-level intensity (e.g., as in a grayscale picture), while the two chrominance (or chroma for short) components Cb and Cr represent chromaticity or color information components. Thus, a picture in YCbCr format has a luminance sample array of luminance sample values (Y) and two chrominance sample arrays of chrominance values (Cb and Cr). A picture in RGB format may be converted or transformed to YCbCr format, and vice versa, a process also known as color conversion or transformation. If a picture is monochrome, the picture may have only a luminance sample array.
[0069] In monochrome sampling, there is only one sample array, nominally considered the luma array.
[0070] In 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the luma array, as shown in FIG. 7A.
[0071] In 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the luma array, as shown in FIG. 7B.
[0072] For 4:4:4 sampling, the following applies depending on the value of separate_colour_plane_flag, as shown in Figure 7C:
[0073] - If separate_colour_plane_flag is equal to 0, each of the two chroma arrays has the same height and width as the luma array.
[0074] - Otherwise (separate_colour_plane_flag equals 1), the three colour planes are treated separately as a monochrome sampled picture.
[0075] The picture source 16 (e.g., video source 16) may be, for example, a camera capturing a picture, a memory having or storing previously captured or generated pictures, e.g., a picture memory, and / or any kind of interface (internal or external) for acquiring or receiving pictures. The camera may be, for example, a local or built-in camera incorporated into the source device, and the memory may be, for example, a local or built-in memory incorporated into the originating device. The interface may be, for example, an external interface for receiving pictures from an external video source, e.g., an external picture capturing device such as a camera, an external memory, or an external picture generating device, e.g., an external computer graphics processor, computer, or server. The interface can be any kind of interface, e.g., a wired or wireless interface, an optical interface, following any proprietary or standardized interface protocol. The interface for acquiring picture data 17 may be the same interface as communication interface 22 or may be part of communication interface 22.
[0076] To distinguish from pre-processing unit 18 and the processing performed by pre-processing unit 18, pictures or picture data 17 (eg, video data 17) may also be referred to as raw pictures or raw picture data 17.
[0077] The pre-processing unit 18 is configured to receive (raw) picture data 17 and to perform pre-processing on the picture data 17 to obtain a pre-processed picture 19 or pre-processed picture data 19. The pre-processing performed by the pre-processing unit 18 may comprise, for example, cropping, color format conversion (e.g., RGB to YCbCr), color correction, or noise removal. It may be understood that the pre-processing unit 18 may be any component.
[0078] An encoder 20 (e.g., a video encoder 20) is configured to receive pre-processed picture data 19 and provide encoded picture data 21 (further details are described below, e.g., based on Figure 2 or Figure 4).
[0079] The communication interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and send it to another device, e.g., the destination device 14 or some other device, for storage or direct reconstruction, or to process the encoded picture data 21 before storing the encoded data 13 and / or sending the encoded data 13 to another device, e.g., the destination device 14 or some other device for decoding or storage, respectively.
[0080] The destination device 14 comprises a decoder 30 (eg a video decoder 30 ) and may further comprise, optionally, a communication interface or unit 28 , a post-processing unit 32 and a display device 34 .
[0081] The communication interface 28 of the destination device 14 is configured to receive the encoded picture data 21 or the encoded data 13, for example directly from the source device 12 or from some other source, for example a storage device, for example a coded picture data storage device.
[0082] The communication interface 22 and the communication interface 28 may be configured to transmit or receive the encoded picture data 21 or the encoded data 13 via a direct communication link between the source device 12 and the destination device 14, e.g., a direct wired or wireless connection, or via any type of network, e.g., a wired or wireless network, or any combination thereof, or any type of private and public network, or any combination thereof.
[0083] The communications interface 22 may, for example, be configured to package the encoded picture data 21 into a suitable format, for example packets, for transmission over a communications link or network.
[0084] A communications interface 28 , which forms a counterpart of communications interface 22 , may be arranged to unpackage the encoded data 13 , for example, to obtain encoded picture data 21 .
[0085] Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces, as indicated by the arrow for encoded picture data 13 in FIG. 1A , pointing from source device 12 to destination device 14, or as bidirectional communication interfaces, e.g., configured to send and receive messages, e.g., to set up connections, acknowledge and exchange some other information related to the communication link and / or data transmission, e.g., encoded picture data transmission.
[0086] The decoder 30 is configured to receive the coded picture data 21 and to provide decoded picture data 31 or decoded pictures 31 (further details are described below, for example, based on Figure 3 or Figure 5).
[0087] The post-processor 32 of the destination device 14 is configured to post-process the decoded picture data 31 (also called reconstructed picture data), e.g., the decoded picture 31, to obtain post-processed picture data 33, e.g., the post-processed picture 33. The post-processing performed by the post-processing unit 32 may comprise, for example, color format conversion (e.g., from YCbCr to RGB), color correction, cropping, or resampling, or any other processing, for example, to prepare the decoded picture data 31 for display, e.g., by a display device 34.
[0088] A display device 34 of the destination device 14 is configured to receive the post-processed picture data 33 for displaying the picture, e.g., to a user or viewer. The display device 34 may be or include any type of display for displaying the reconstructed picture, e.g., an internal or external display or monitor. The display may include, for example, a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a plasma display, a projector, a micro LED display, a liquid crystal on silicon (LCoS), a digital light processor (DLP), or any other type of display.
[0089] 1A depicts source device 12 and destination device 14 as separate devices, embodiments of the devices may also have both or both functionality, source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such embodiments, source device 12 or corresponding functionality and destination device 14 or corresponding functionality may be implemented using the same hardware and / or software, or by separate hardware and / or software, or any combination thereof.
[0090] As will be clear to those skilled in the art based on the description, the functionality of the different units, or the presence and (exact) division of functionality within the source device 12 and / or destination device 14 as shown in FIG. 1A, may vary depending on the actual device and application.
[0091] The encoder 20 (e.g., video encoder 20) and decoder 30 (e.g., video decoder 30) may each be implemented as any of a variety of suitable circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof. Where the techniques are implemented partially in software, a device may store instructions for the software on a suitable, non-transitory computer-readable storage medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Any of the above (including hardware, software, a combination of hardware and software, etc.) may be considered to be one or more processors. Each of the video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, either of which may be incorporated as part of a combined encoder / decoder (CODEC) in the respective device.
[0092] Source device 12 may be referred to as a video encoding device or video encoding apparatus. Destination device 14 may be referred to as a video decoding device or video decoding apparatus. Source device 12 and destination device 14 may be examples of video coding devices or video coding apparatus.
[0093] The source device 12 and destination device 14 may comprise any of a wide range of devices, including any type of handheld or stationary device, such as a notebook or laptop computer, a mobile phone, a smartphone, a tablet or tablet computer, a camera, a desktop computer, a set-top box, a television set, a display device, a digital media player, a video game console, a video streaming device (e.g., a content service server or content distribution server), a broadcast receiving device, a broadcast transmitting device, etc., and may use no operating system or any type of operating system.
[0094] In some cases, the source device 12 and the destination device 14 may be equipped with capabilities for wireless communication. Thus, the source device 12 and the destination device 14 may be wireless communication devices.
[0095] 1A is merely an example, and the techniques herein may be applied to video coding settings (e.g., video encoding or video decoding) that do not necessarily involve any data communication between encoding and decoding devices. In other examples, data may be retrieved from local memory, streamed over a network, etc. A video encoding device may encode data and store it in memory, and / or a video decoding device may retrieve data from memory and decode it. In some examples, encoding and decoding are performed by devices that do not communicate with each other but simply encode data and store it in memory and / or retrieve data from memory and decode it.
[0096] It should be understood that for each of the above examples described with reference to video encoder 20, video decoder 30 may be configured to perform the inverse process. With respect to signaling syntax elements, video decoder 30 may be configured to receive and parse such syntax elements and decode associated video data accordingly. In some examples, video encoder 20 may entropy encode one or more syntax elements into the encoded video bitstream. In such examples, video decoder 30 may parse such syntax elements and decode associated video data accordingly.
[0097] 1B is an illustrative diagram of another example video coding system 40 including the encoder 20 of FIG. 2 and / or the decoder 30 of FIG. 3, according to an example embodiment. System 40 may implement techniques according to various examples described herein. In the illustrated implementation, video coding system 40 may include an imaging device 41, a video encoder 20, a video decoder 30 (and / or a video coder implemented by logic 47 of a processing unit 46), an antenna 42, one or more processors 43, one or more memory stores 44, and / or a display device 45.
[0098] As shown, imaging device 41, antenna 42, processing unit 46, logic circuitry 47, video encoder 20, video decoder 30, processor 43, memory store 44, and / or display device 45 may be capable of communicating with one another. As illustrated, although both video encoder 20 and video decoder 30 are shown, video coding system 40 may include only video encoder 20 or only video decoder 30 in various examples.
[0099] As shown, in some examples, video coding system 40 may include antenna 42. Antenna 42 may be configured to transmit or receive, for example, an encoded bitstream of video data. Further, in some examples, video coding system 40 may include display device 45. Display device 45 may be configured to present the video data. As shown, in some examples, logic circuitry 47 may be implemented by processing unit 46. Processing unit 46 may include application specific integrated circuit (ASIC) logic, a graphics processor, a general-purpose processor, etc. Video coding system 40 may also include an optional processor 43, which may in turn include application specific integrated circuit (ASIC) logic, a graphics processor, a general-purpose processor, etc. In some examples, logic circuitry 47 may be implemented by hardware, dedicated video coding hardware, etc., and processor 43 may be implemented with general-purpose software, an operating system, etc. Moreover, memory store 44 may be any type of memory, such as volatile memory (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), etc.) or non-volatile memory (e.g., flash memory, etc.). In a non-limiting example, memory store 44 may be implemented by cache memory. In some examples, logic circuitry 47 may access memory store 44 (e.g., for implementing an image buffer). In other examples, logic circuitry 47 and / or processing unit 46 may include a memory store (e.g., a cache, etc.) for implementing an image buffer, etc.
[0100] In some examples, video encoder 20 implemented by logic circuitry may include an image buffer (e.g., by either processing unit 46 or memory store 44) and a graphics processing unit (e.g., by processing unit 46). The graphics processing unit may be communicatively coupled to the image buffer. The graphics processing unit may include video encoder 20 implemented by logic circuitry 47 to embody the various modules described in connection with FIG. 2 and / or any other encoder system or subsystem described herein. The logic circuitry may be configured to perform various operations described herein.
[0101] Video decoder 30 may be similarly implemented by logic circuitry 47 to embody the various modules described in connection with decoder 30 of FIG. 3 and / or any other decoder system or subsystem described herein. In some examples, video decoder 30 may be implemented by logic circuitry and may include an image buffer (e.g., by either processing unit 46 or memory store 44) and a graphics processing unit (e.g., by processing unit 46). The graphics processing unit may be communicatively coupled to the image buffer. The graphics processing unit may include video decoder 30 implemented by logic circuitry 47 to embody the various modules described in connection with FIG. 3 and / or any other decoder system or subsystem described herein.
[0102] In some examples, antenna 42 of video coding system 40 may be configured to receive an encoded bitstream of video data. As described, the encoded bitstream may include data related to encoding video frames as described herein, such as data related to coding partitions (e.g., transform coefficients or quantized transform coefficients, any indicators (as described), and / or data defining coding partitions), indicators, index values, mode selection data, etc. Video coding system 40 may also include video decoder 30 coupled to antenna 42 and configured to decode the encoded bitstream. Display device 45 is configured to present the video frames.
[0103] Encoder and encoding method FIG. 2 shows a schematic / conceptual block diagram of an exemplary video encoder 20 configured to implement the techniques of the present application. In the example of FIG. 2, the video encoder 20 includes a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a buffer 216, a loop filter unit 220, a decoded picture buffer (DPB) 230, a prediction processing unit 260, and an entropy encoding unit 270. The prediction processing unit 260 may include an inter prediction unit 244, an intra prediction unit 254, and a mode selection unit 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder conforming to a hybrid video codec.
[0104] For example, the residual calculation unit 204, the transform processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy coding unit 270 form the forward signal path of the encoder 20, while for example, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, and the prediction processing unit 260 form the backward signal path of the encoder, which corresponds to the signal path of the decoder (see decoder 30 in Figure 3).
[0105] The encoder 20 is configured to receive, for example via an input 202, a picture 201 or a block 203 of picture 201, e.g. a picture of a video or a sequence of pictures forming a video sequence. The picture block 203 may also be called a current picture block or a picture block to be coded, and the picture 201 may also be called a current picture or a picture to be coded (in particular in video coding, to distinguish the current picture from other pictures, e.g. previously coded and / or decoded pictures of the same video sequence, i.e. a video sequence that also includes the current picture).
[0106] Partitioning An embodiment of encoder 20 may comprise a partitioning unit (not shown in FIG. 2) configured to divide picture 201 into a number of blocks, such as block 203, typically into a number of non-overlapping blocks. The partitioning unit may be configured to use the same block size for all pictures of the video sequence and a corresponding grid defining the block sizes, or to vary the block size among pictures or subsets or groups of pictures and divide each picture into corresponding blocks.
[0107] In one example, prediction processing unit 260 of video encoder 20 may be configured to perform any combination of the above partitioning techniques.
[0108] Similar to picture 201, block 203 may also be or be considered to be a two-dimensional array or matrix of samples having intensity values (sample values), albeit with smaller dimensions than picture 201. That is, block 203 may have, for example, one sample array (e.g., a luma array in the case of monochrome picture 201) or three sample arrays (e.g., a luma and two chroma arrays in the case of color picture 201) or any other number and / or type of arrays, depending on the color format applied. The number of samples in the horizontal and vertical directions (or axes) of block 203 define the size of block 203.
[0109] The video encoder 20 shown in FIG. 2 is configured to encode a picture 201 block by block, eg, encoding and prediction is performed block by block 203 .
[0110] The partitioning unit may be configured to divide a picture from a video sequence into a series of coding tree units (CTUs), and the partitioning unit may divide (or split) the coding tree units (CTUs) into smaller partitions, e.g., smaller blocks of square or rectangular size. For a picture with three sample arrays, a CTU consists of an NxN block of luma samples along with two corresponding blocks of chroma samples. The maximum allowable size of a luma block in a CTU is specified as 128x128 in the developing versatile video coding (VVC) standard, but it may be specified as a value other than 128x128, e.g., 256x256, in the future. CTUs of a picture may be clustered / grouped as slices / tile groups, tiles, or bricks. A tile covers a rectangular area of the picture, and a tile may be divided into one or more bricks. A brick consists of multiple CTU rows within the tile. A tile that is not divided into multiple bricks may be called a brick. However, a brick is a complete subset of a tile and is not called a tile. There are two modes of tile groups supported in VVC: raster scan slice / tile group mode and rectangular slice mode. In raster scan tile group mode, a slice / tile group contains a succession of tiles in a tile raster scan of the picture. In rectangular slice mode, a slice contains a number of bricks of a picture that collectively form a rectangular region of the picture. The bricks within a rectangular slice are in the order of the brick raster scan of the slice. These smaller blocks (which may also be called sub-blocks) may be further divided into even smaller partitions.This is also called tree partitioning or hierarchical tree partitioning; for example, a root block at root tree level 0 (hierarchical level 0, depth 0) may be recursively partitioned into two or more blocks at the next lower tree level, e.g., a node at tree level 1 (hierarchical level 1, depth 1), and these blocks may be partitioned again into two or more blocks at the next lower level, e.g., tree level 2 (hierarchical level 2, depth 2), until partitioning is terminated, e.g., because a termination criterion is met, e.g., a maximum tree depth or a minimum block size is reached. Blocks that are not further divided are also called leaf blocks or leaf nodes of the tree. A tree using partitioning into two partitions is called a binary tree (BT), a tree using partitioning into three partitions is called a ternary tree (TT), and a tree using partitioning into four partitions is called a quad tree (QT).
[0111] For example, a coding tree unit (CTU) may be or have a CTB of luma samples, two corresponding CTBs of chroma samples for a picture with three sample arrays, or a CTB of samples for a monochrome picture or a picture coded using three distinct color planes and syntax structures used to code the samples. Correspondingly, a coding tree block (CTB) may be an N x N block of samples for some value of N, such that the division of the components into CTBs is a partitioning. A coding unit (CU) may be or have a coding block of luma samples, two corresponding coding blocks of chroma samples for a picture with three sample arrays, or a coding block of samples for a picture coded using three distinct color planes and syntax structures used to code the monochrome picture or samples. Correspondingly, a coding block (CB) may be an M x N block of samples for some values of M and N, such that the division of the CTB into coding blocks is a partitioning.
[0112] In an embodiment, for example, according to HEVC, coding tree units (CTUs) may be divided into CUs by using a quadtree structure represented as a coding tree. The decision of whether to code a picture area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the leaf CU level. Each leaf CU may be further divided into one, two, or four PUs according to a PU partition type. Within a PU, the same prediction process is applied, and related information is sent to the decoder on a PU-by-PU basis. After obtaining residual blocks by applying the prediction process based on the PU partition type, the leaf CUs may be divided into transform units (TUs) according to another quadtree structure similar to the coding tree for CUs.
[0113] In an embodiment, a hybrid quadtree nested multitype tree using binary and ternary tree split segmentation structures is used to split a coding tree unit, for example, in accordance with the latest video coding standard currently under development, called Versatile Video Coding (VVC). In the coding tree structure within a coding tree unit, a CU can have either a square or rectangular shape. For example, a coding tree unit (CTU) is first split by a quadtree. The quadtree leaf nodes can then be further split by a multitype tree structure. There are four split types for the multitype tree structure: vertical bisection (SPLIT_BT_VER), horizontal bisection (SPLIT_BT_HOR), vertical trisection (SPLIT_TT_VER), and horizontal trisection (SPLIT_TT_HOR). The multitype tree leaf nodes are called coding units (CUs). This segmentation is used for prediction and transform processing without further partitioning, unless the CU is too large for the maximum transform length. This means that in most cases, CUs, PUs, and TUs have the same block size in a quadtree-nested multitype tree coding block structure. An exception occurs when the maximum corresponding transform length is smaller than the width or height of the color components of the CU. VVC has developed a unique signaling mechanism for partitioning information in the quadtree-nested multitype tree coding tree structure. In this signaling mechanism, the coding tree unit (CTU) is treated as the root of the quadtree and is first split by the quadtree tree structure. Each quadtree leaf node (if large enough to allow it) is then further split by the multitype tree structure. In the multitype tree structure, a first flag (mtt_split_cu_flag) is signaled to indicate whether the node will be further split.If a node is further split, a second flag (mtt_split_cu_vertical_flag) is signaled to indicate the split direction, and then a third flag (mtt_split_cu_binary_flag) is signaled to indicate whether the split is bisecting or trisecting. Based on the values of mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, the multi-type tree split mode (MttSplitMode) of the CU can be derived by the decoder based on a predefined rule or table. It should be noted that for certain designs, such as 64x64 luma blocks and 32x32 chroma pipelined designs in a VVC hardware decoder, TT splitting is prohibited if either the width or height of the luma coding block is greater than 64. TT splitting is also prohibited if either the width or height of the chroma coding block is greater than 32. Pipelining design involves dividing a picture into virtual pipeline data units (VPDUs), which are defined as non-overlapping units within a picture. In a hardware decoder, consecutive VPDUs are processed by multiple pipeline stages simultaneously. It is important to keep the VPDU size small because the VPDU size is roughly proportional to the buffer size in most pipeline stages. In most hardware decoders, the VPDU size can be set to the maximum transform block (TB) size. However, in VVC, ternary tree (TT) and binary tree (BT) partitions can result in an increase in VPDU size.
[0114] Furthermore, it should be noted that if any part of a tree node block exceeds the bottom or right picture boundary, the tree node block is forced to be split until all samples of every coded CU lie within the picture boundary.
[0115] As an example, an Intra Subpartitions (ISP) tool may divide a luma intra predicted block vertically or horizontally into two or four subpartitions depending on the block size.
[0116] Residual calculation The residual calculation unit 204 is configured to calculate the residual block 205 based on the picture block 203 and the prediction block 265 (further details regarding the prediction block 265 are provided later), for example, by subtracting sample values of the prediction block 265 from sample values of the picture block 203 on a sample-by-sample (pixel-by-pixel) basis to obtain the residual block 205 in the sample domain.
[0117] conversion The transform processing unit 206 is configured to apply a transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), to the sample values of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207, also called transform residual coefficients, may represent the residual block 205 in the transform domain.
[0118] The transform processing unit 206 may be configured to apply an integer approximation of a DCT / DST, such as the transform specified for HEVC / H.265. Compared to an orthogonal DCT transform, such an integer approximation is typically scaled by a specific factor. To preserve the norm of the residual blocks processed by the forward and inverse transforms, additional scaling factors are applied as part of the transform process. The scaling factors are typically selected based on specific constraints, such as scaling factors that are powers of two for shift operations, the bit depth of the transform coefficients, a trade-off between accuracy and implementation cost, etc. Specific scaling factors may be specified, e.g., for the inverse transform, e.g., by the inverse transform processing unit 212 in the decoder 30 (and the corresponding inverse transform, e.g., by the inverse transform processing unit 212 in the encoder 20), and the corresponding scaling factors for the forward transform, e.g., by the transform processing unit 206 in the encoder 20, may be specified accordingly.
[0119] Quantization The quantization unit 208 is configured to quantize the transform coefficients 207 to obtain quantized transform coefficients 209, for example, by applying scalar quantization or vector quantization. The quantized transform coefficients 209 may also be referred to as quantized residual coefficients 209. The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform coefficient may be rounded down to an m-bit transform coefficient during quantization, where n is greater than m. The degree of quantization may be changed by adjusting a quantization parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to finer quantization, while a larger quantization step size corresponds to coarser quantization. The applicable quantization step size may be indicated by the quantization parameter (QP). The quantization parameter may, for example, be an index into a predefined set of applicable quantization step sizes. For example, a small quantization parameter may correspond to finer quantization (smaller quantization step size), a large quantization parameter may correspond to coarser quantization (larger quantization step size), and vice versa. Quantization may involve division by the quantization step size, and corresponding or inverse inverse quantization, e.g., by the inverse quantization unit 210, may involve multiplication by the quantization step size. Embodiments according to some standards, e.g., HEVC, may be configured to use the quantization parameter to determine the quantization step size. Generally, the quantization step size may be calculated based on the quantization parameter using a fixed-point approximation of an equation involving division. Additional scaling factors may be introduced for quantization and inverse quantization to recover the norm of the residual block, which may be changed due to scaling used in the fixed-point approximation of the equations for the quantization step size and the quantization parameter. In one example implementation, the scaling of the inverse transform and inverse quantization may be combined. Alternatively, customized quantization tables may be used and conveyed from the encoder to the decoder, e.g., in the bitstream.Quantization is a lossy operation, and the loss increases with increasing quantization step size.
[0120] Inverse quantization unit 210 is configured to apply the inverse quantization of quantization unit 208 to the quantized coefficients to obtain inverse quantized coefficients 211, e.g., by applying the inverse of the quantization scheme applied by quantization unit 208, based on or using the same quantization step size as quantization unit 208. The inverse quantized coefficients 211, which may also be referred to as inverse quantized residual coefficients 211, typically correspond to transform coefficients 207, although they are not the same as transform coefficients due to losses due to quantization.
[0121] The inverse transform processing unit 212 is configured to apply an inverse transform of the transform applied by the transform processing unit 206, for example, an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), to obtain an inverse transform block 213 in the sample domain. The inverse transform block 213 may also be referred to as an inverse transformed dequantized block 213 or an inverse transformed residual block 213.
[0122] The reconstruction unit 214 (e.g., adder 214) is configured to add the inverse transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265 to obtain the reconstructed block 215 in the sample domain, for example, by adding the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265.
[0123] Optionally, a buffer unit 216 (or "buffer" 216 for short), e.g., a line buffer 216, is configured to buffer or store the reconstructed blocks 215 and their respective sample values, e.g., for intra prediction. In further embodiments, the encoder may be configured to use the unfiltered reconstructed blocks and / or their respective sample values stored in the buffer unit 216 for any kind of estimation and / or prediction, e.g., intra prediction.
[0124] Embodiments of the encoder 20 may be configured, for example, such that the buffer unit 216 is used to store the reconstructed blocks 215 not only for the intra prediction unit 254 but also for the loop filter unit 220 (not shown in FIG. 2), and / or such that the buffer unit 216 and the decoded picture buffer unit 230 form one buffer. Further embodiments may be configured to use the filtered blocks 221 and / or blocks or samples from the decoded picture buffer 230 (both not shown in FIG. 2) as input or basis for the intra prediction unit 254.
[0125] Loop filter unit 220 (or “loop filter” 220 for short) is configured to filter reconstructed block 215 to obtain filtered block 221, e.g., to smooth pixel transitions or otherwise improve video quality. Loop filter unit 220 is intended to represent one or more loop filters, such as a deblocking filter, a sample adaptive offset (SAO) filter, or other filters, e.g., a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter. Although loop filter unit 220 is shown in FIG. 2 as being an in-loop filter, in other configurations, loop filter unit 220 may be implemented as a post-loop filter. Filtered block 221 may also be referred to as filtered reconstructed block 221. Decoded picture buffer 230 may store the reconstructed coding block after loop filter unit 220 performs a filtering operation on the reconstructed coding block.
[0126] An embodiment of encoder 20 (or loop filter unit 220) may be configured to output loop filter parameters (e.g., sample adaptive offset information), e.g., directly or entropy coded via entropy coding unit 270 or some other entropy coding unit, so that, e.g., decoder 30 may receive and apply the same loop filter parameters for decoding.
[0127] The decoded picture buffer (DPB) 230 may be a reference picture memory that stores reference picture data used by the video encoder 20 in encoding the video data. The DPB 230 may be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous dynamic random access memory (SDRAM), magnetoresistive random access memory (MRAM), resistive random access memory (RRAM), or other types of memory devices. The DPB 230 and the buffer 216 may be provided by the same memory device or separate memory devices. In some examples, the decoded picture buffer (DPB) 230 is configured to store filtered blocks 221. The decoded picture buffer (DPB) 230 may be further configured to store other previously filtered blocks, e.g., previously reconstructed and filtered block 221, of the same current picture or of a different picture, e.g., a previously reconstructed picture, and may provide a complete previously reconstructed, i.e., decoded, picture (and corresponding reference blocks and samples) and / or a partially reconstructed current picture (and corresponding reference blocks and samples), e.g., for inter-prediction. In some examples, the decoded picture buffer (DPB) 230 is configured to store the reconstructed block 215 when the reconstructed block 215 is reconstructed but without in-loop filtering.
[0128] The prediction processing unit 260, also referred to as block prediction processing unit 260, is configured to receive or obtain block 203 (current block 203 of current picture 201) and reconstructed picture data, e.g., reference samples of the same (current) picture from buffer 216 and / or reference picture data 231 from one or more previously decoded pictures from decoded picture buffer 230, and to process such data for prediction, i.e., to provide a prediction block 265, which may be an inter-predicted block 245 or an intra-predicted block 255.
[0129] The mode selection unit 262 may be configured to select a prediction mode (e.g., intra or inter prediction mode) and / or a corresponding prediction block 245 or 255 to be used as the prediction block 265 for the calculation of the residual block 205 and for the reconstruction of the reconstructed block 215.
[0130] Embodiments of mode selection unit 262 may be configured to select a prediction mode (e.g., from those supported by prediction processing unit 260) that results in the best match, i.e., in other words, the smallest residual (which means better compression for transmission or storage), or the smallest signaling overhead (which means better compression for transmission or storage), or that considers or balances both. Mode selection unit 262 may be configured to determine the prediction mode based on rate-distortion optimization (RDO), i.e., to select a prediction mode that results in the lowest rate-distortion optimization, or that is associated with a rate-distortion that at least satisfies a prediction mode selection criterion.
[0131] Below, the prediction processing (eg, prediction processing unit 260 and mode selection (eg, by mode select unit 262)) performed by exemplary encoder 20 is described in more detail.
[0132] As mentioned above, the encoder 20 is configured to determine or select a best or optimal prediction mode from a (predetermined) set of prediction modes, which may include, for example, intra-prediction modes and / or inter-prediction modes.
[0133] The set of intra prediction modes may include 35 different intra prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes as defined in H.265, or may include 67 different intra prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes as defined in the currently under development H.266.
[0134] The set of intra prediction modes (or possible intra prediction modes) depends on the available reference pictures (i.e., previous, at least partially decoded pictures, e.g., stored in DPB230) and other inter prediction parameters, such as whether the entire reference picture or only a portion of the reference picture, e.g., a search window area around the area of the current block, is used to find the reference block that shows the best match, and / or, for example, whether pixel interpolation, e.g., half / semi-pel and / or quarter-pel interpolation, is applied.
[0135] In addition to the above prediction modes, skip mode and / or direct mode may also be applied.
[0136] The prediction processing unit 260 may be further configured to divide the block 203 into smaller block partitions or sub-blocks, for example, by repeatedly using quadtree partitioning (QT), binary tree partitioning (BT), or ternary tree partitioning (TT), or any combination thereof, and to perform prediction for each of the block partitions or sub-blocks, for example, where the mode selection comprises selecting a tree structure of the divided block 203 and a prediction mode applied to each of the block partitions or sub-blocks.
[0137] The inter prediction unit 244 may include a motion estimation (ME) unit (not shown in FIG. 2) and a motion compensation (MC) unit (not shown in FIG. 2). The motion estimation unit is configured to receive or obtain the picture block 203 (the current picture block 203 of the current picture 201) and the decoded picture 231, or at least one or more previously reconstructed blocks, e.g., reconstructed blocks of one or more other / different previously decoded pictures 231, for motion estimation. For example, a video sequence may have the current picture and the previously decoded picture 231, or in other words, the current picture and the previously decoded picture 231 may be part of or form a sequence of pictures that form a video sequence.
[0138] The encoder 20 may be configured, for example, to select a reference block from a plurality of reference blocks of the same or different pictures among a plurality of other pictures, and to provide the reference picture (or reference picture index, ...) and / or an offset (spatial offset) between the position (x, y coordinates) of the reference block and the position of the current block as an inter-prediction parameter to a motion estimation unit (not shown in Fig. 2). This offset is also called a motion vector (MV).
[0139] The motion compensation unit is configured to obtain, e.g., receive, inter prediction parameters and perform inter prediction based on or using the inter prediction parameters to obtain inter prediction block 245. Motion compensation performed by the motion compensation unit (not shown in FIG. 2) may involve fetching or generating a prediction block based on motion / block vectors determined by motion estimation, possibly performing interpolation to sub-pixel accuracy. Interpolation filtering can generate additional pixel samples from known pixel samples, thus potentially increasing the number of candidate prediction blocks that can be used to code the picture block. Upon receiving a motion vector for the PU of the current picture block, the motion compensation unit may find the prediction block pointed to by the motion vector in one of the reference picture lists. The motion compensation unit may also generate block- and video slice-related syntax elements used by video decoder 30 in decoding picture blocks of the video slice.
[0140] The intra prediction unit 254 is configured to obtain, e.g., receive, the picture block 203 (current picture block) and one or more previously reconstructed blocks of the same picture, e.g., reconstructed neighboring blocks, for intra estimation. The encoder 20 may, for example, be configured to select an intra prediction mode from a plurality of (predetermined) intra prediction modes.
[0141] An embodiment of the encoder 20 may be configured to select an intra-prediction mode based on an optimization criterion, such as minimum residual (e.g., the intra-prediction mode that results in a predicted block 255 that is most similar to the current picture block 203) or minimum rate distortion.
[0142] The intra prediction unit 254 is further configured to determine the intra prediction block 255 based on intra prediction parameters, e.g., a selected intra prediction mode. In either case, after selecting an intra prediction mode for the block, the intra prediction unit 254 is also configured to provide the intra prediction parameters, i.e., information indicating the selected intra prediction mode for the block, to the entropy encoding unit 270. In one example, the intra prediction unit 254 may be configured to perform any combination of the intra prediction techniques described below.
[0143] The entropy encoding unit 270 is configured to apply an entropy encoding algorithm or scheme (e.g., a variable length coding (VLC) scheme, a context-adaptive VLC scheme (CALVC), an arithmetic coding scheme, a context-adaptive binary arithmetic coding (CABAC), a syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy encoding methodology or technique) to the quantized residual coefficients 209, the inter-prediction parameters, the intra-prediction parameters, and / or the loop filter parameters, individually or jointly (or not at all), to obtain coded picture data 21, which may be output by an output unit 272, for example, in the form of a coded bitstream 21. The coded bitstream 21 may be sent to the video decoder 30 or archived for later transmission or retrieval by the video decoder 30. The entropy encoding unit 270 may further be configured to entropy encode the remaining syntax elements for the current video slice being coded.
[0144] Other structural variations of the video encoder 20 may be used to encode the video stream. For example, a non-transform-based encoder 20 may quantize the residual signal directly for a particular block or frame without relying on the transform processing unit 206. In other implementations, the encoder 20 may have the quantization unit 208 and the inverse quantization unit 210 combined into a single unit.
[0145] 3 shows an exemplary video decoder 30 configured to implement the techniques of the present application. Video decoder 30 is configured to receive coded picture data (e.g., coded bitstream) 21, e.g., coded by encoder 20, to obtain decoded picture 131. During the decoding process, video decoder 30 receives video data from video encoder 20, e.g., a coded video bitstream representing picture blocks of coded video slices and associated syntax elements.
[0146] 3, decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., accumulator 314), a buffer 316, a loop filter 320, a decoded picture buffer 330, and a prediction processing unit 360. Prediction processing unit 360 may include an inter prediction unit 344, an intra prediction unit 354, and a mode selection unit 362. Video decoder 30, in some examples, may perform a decoding path that is generally the reverse of the encoding path described with respect to video encoder 20 of FIG.
[0147] Entropy decoding unit 304 is configured to perform entropy decoding on encoded picture data 21, e.g., to obtain quantized coefficients 309 and / or decoded coding parameters (not shown in FIG. 3), e.g., any or all of inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements. Entropy decoding unit 304 is further configured to forward the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to prediction processing unit 360. Video decoder 30 may receive syntax elements at the video slice level and / or the video block level.
[0148] The inverse quantization unit 310 may be functionally identical to the inverse quantization unit 210, the inverse transform processing unit 312 may be functionally identical to the inverse transform processing unit 212, the reconstruction unit 314 may be functionally identical to the reconstruction unit 214, the buffer 316 may be functionally identical to the buffer 216, the loop filter 320 may be functionally identical to the loop filter 220, and the decoded picture buffer 330 may be functionally identical to the decoded picture buffer 230.
[0149] Prediction processing unit 360 may include an inter prediction unit 344 and an intra prediction unit 354, which may be similar in function to inter prediction unit 244 and intra prediction unit 354, respectively. Prediction processing unit 360 is typically configured to perform block prediction and / or obtain prediction blocks 365 from encoded data 21, and to receive or obtain (explicitly or implicitly) prediction-related parameters and / or information regarding a selected prediction mode, for example, from entropy decoding unit 304.
[0150] If a video slice is coded as an intra-coded (I) slice, intra prediction unit 354 of prediction processing unit 360 is configured to generate predictive block 365 for a picture block of the current video slice based on the signaled intra prediction mode and data from a previously decoded block in the current frame or picture. If a video frame is coded as an inter-coded (i.e., B or P) slice, inter prediction unit 344 (e.g., a motion compensation unit) of prediction processing unit 360 is configured to generate predictive block 365 for a video block of the current video slice based on the motion vector and other syntax elements received from entropy decoding unit 304. For inter prediction, the predictive block may be generated from one of the reference pictures in one of the reference picture lists. Video decoder 30 may construct the reference frame lists, List0 and List1, using a default construction technique based on the reference pictures stored in DPB 330.
[0151] Prediction processing unit 360 is configured to determine prediction information for video blocks of the current video slice by parsing the motion vectors and other syntax elements, and use the prediction information to generate a prediction block for the current video block being decoded. For example, prediction processing unit 360 uses some of the received syntax elements to determine the prediction mode (e.g., intra- or inter-prediction) used to code the video blocks of the video slice, the inter-prediction slice type (e.g., B slice, P slice, or GPB slice), configuration information for one or more reference picture lists for the slice, the motion vectors of each inter-coded video block of the slice, the inter-prediction status of each inter-coded video block of the slice, and other information for decoding the video blocks in the current video slice.
[0152] Inverse quantization unit 310 is configured to inverse quantize, i.e., dequantize, the quantized transform coefficients provided in the bitstream and decoded by entropy decoding unit 304. The inverse quantization process may involve using quantization parameters calculated by video encoder 20 for each video block within a video slice to determine the degree of quantization and, similarly, the degree of inverse quantization to be applied.
[0153] Inverse transform processing unit 312 is configured to apply an inverse transform, eg, an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients in order to produce residual blocks in the pixel domain.
[0154] The reconstruction unit 314 (e.g., adder 314) is configured to add the inverse transform block 313 (i.e., the reconstructed residual block 313) to the prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example, by adding the sample values of the reconstructed residual block 313 and the sample values of the prediction block 365 together.
[0155] Loop filter unit 320 (either in the coding loop or after the coding loop) is configured to filter reconstructed block 315, e.g., to smooth pixel transitions or otherwise improve video quality, to obtain filtered block 321. In one example, loop filter unit 320 may be configured to perform any combination of the filtering techniques described below. Loop filter unit 320 is intended to represent one or more loop filters, such as a deblocking filter, a sample adaptive offset (SAO) filter, or other filters, e.g., a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter. Although loop filter unit 320 is shown in FIG. 3 as being an in-loop filter, in other configurations, loop filter unit 320 may be implemented as a post-loop filter.
[0156] The decoded video blocks 321 in a given frame or picture are then stored in a decoded picture buffer 330. The decoded picture buffer 330 stores reference pictures used for subsequent motion compensation.
[0157] The decoder 30 is arranged to output the decoded pictures 311, for example via an output 332, for presentation or display to a user.
[0158] Other variations of video decoder 30 may be used to decode the compressed bitstream. For example, decoder 30 may generate an output video stream without loop filtering unit 320. For example, a non-transform-based decoder 30 may inverse quantize the residual signal directly for a particular block or frame without inverse transform processing unit 312. In other implementations, video decoder 30 may have inverse quantization unit 310 and inverse transform processing unit 312 combined into a single unit.
[0159] 4 is a schematic diagram of a video coding device 400 according to an embodiment of the present disclosure. Video coding device 400 is suitable for implementing the disclosed embodiments as described herein. In an embodiment, video coding device 400 may be a decoder such as video decoder 30 of FIG. 1A or an encoder such as video encoder 20 of FIG. 1A. In an embodiment, video coding device 400 may be one or more components of video decoder 30 of FIG. 1A or video encoder 20 of FIG. 1A as described above.
[0160] Video coding device 400 includes an ingress port 410 and a receiver unit (Rx) 420 for receiving data, a processor, logic unit, or central processing unit (CPU) 430 for processing data, a transmitter unit (Tx) 440 and an egress port 450 for transmitting data, and a memory 460 for storing data. Video coding device 400 may also include optical-electrical (OE) and electro-optical (EO) components coupled to ingress port 410, receiver unit 420, transmitter unit 440, and egress port 450 for the egress or ingress of optical or electrical signals.
[0161] The processor 430 is implemented in hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), FPGA, ASIC, and DSP. The processor 430 communicates with the ingress port 410, the receiver unit 420, the transmitter unit 440, the egress port 450, and the memory 460. The processor 430 includes a coding module 470. The coding module 470 implements the disclosed embodiments described above. For example, the coding module 470 implements, processes, prepares, or provides various coding operations. The inclusion of the coding module 470 thus provides a substantial improvement in the functionality of the video coding device 400 and achieves transformation of the video coding device 400 into different states. Alternatively, the coding module 470 is implemented as instructions stored in the memory 460 and executed by the processor 430.
[0162] Memory 460 may include one or more disks, tape drives, and solid-state drives, and may be used as overflow data storage devices to store programs when such programs are selected for execution and to store instructions and data read during program execution. Memory 460 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).
[0163] 5 is a schematic block diagram of an apparatus 500 that may be used as either or both of the source device 12 and the destination device 14 of FIG. 1A according to an example embodiment. The apparatus 500 may implement the techniques of the present application as described above. The apparatus 500 may take the form of a computing system including multiple computing devices, or a single computing device, such as a mobile phone, tablet computer, laptop computer, notebook computer, desktop computer, etc.
[0164] Processor 502 in device 500 can be a central processing unit. Alternatively, processor 502 can be any other type of device or devices, now existing or later developed, that can manipulate or process information. While the disclosed implementations can be performed with a single processor, e.g., processor 502, as shown, advantages of speed and efficiency can be achieved using more than one processor.
[0165] The memory 504 in the device 500 may be a read-only memory (ROM) device or a random-access memory (RAM) device in implementation. Any other suitable type of storage device may be used as the memory 504. The memory 504 may include code and data 506 accessed by the processor 502 using a bus 512. The memory 504 may further include an operating system 508 and application programs 510, which include at least one program that enables the processor 502 to perform the methods described herein. For example, the application programs 510 may include applications 1 through N, which may further include a video coding application that performs the methods described herein. The device 500 may also include additional memory in the form of a secondary storage device 514, which may be, for example, a memory card used with a mobile computing device. Because a video communication session may contain a significant amount of information, it may be stored in whole or in part in the secondary storage device 514 and loaded into the memory 504 as needed for processing.
[0166] The device 500 may also include one or more output devices, such as a display 518. The display 518, in one example, may be a touch-sensitive display that combines a display with touch-sensitive elements operable to detect touch input. The display 518 may be coupled to the processor 502 via the bus 512. Other output devices that enable a user to program or otherwise use the device 500 may be provided in addition to or instead of the display 518. When the output device is or includes a display, the display may be implemented in a variety of ways, including a liquid crystal display (LCD), a cathode ray tube (CRT) display, a plasma display, or a light emitting diode (LED) display, such as an organic LED (OLED) display.
[0167] The device 500 may also include or communicate with an image sensing device 520, such as a camera or any other now existing or later developed image sensing device 520 that is capable of sensing images, such as an image of a user operating the device 500. The image sensing device 520 may be positioned so that it is pointed toward the user operating the device 500. In an example, the position and optical axis of the image sensing device 520 may be set so that its field of view is immediately adjacent to the display 518 and includes the area in which the display 518 is visible.
[0168] Device 500 may also include or communicate with a sound sensing device 522, such as a microphone or any other now existing or later developed sound sensing device that can detect sound near device 500. Sound sensing device 522 may be positioned such that it is pointed toward a user operating device 500 and may be configured to receive sound, such as speech or other utterances, emitted by a user while the user is operating device 500.
[0169] While FIG. 5 depicts the processor 502 and memory 504 of device 500 as being integrated into a single unit, other configurations are available. The operations of processor 502 can be distributed across multiple machines (each machine having one or more processors), which may be coupled directly or across a local area or other network. Memory 504 can be distributed across multiple machines, such as network-based memory or memory in multiple machines that perform the operations of device 500. While depicted here as a single bus, bus 512 of device 500 may be comprised of multiple buses. Furthermore, secondary storage 514 may be directly coupled to other components of device 500 or may be accessible over a network and may comprise a single integrated unit such as a memory card or multiple units, such as multiple memory cards. Device 500 may thus be implemented in a wide variety of configurations.
[0170] Video encoder 20 may divide input video frames into blocks before encoding. The term “block” in this disclosure refers to any type of block or block of any depth, e.g., the term “block” includes, but is not limited to, a root block, a block, a sub-block, a leaf node, etc. Blocks to be coded do not necessarily have the same size. A picture may contain blocks of different sizes, and block rasters for different pictures in a video sequence may also be different. Figures 6A-6E illustrate coding tree unit (CTU) / coding unit (CU) division modes in VVC.
[0171] Figure 6A illustrates a block partition structure by adopting quadtree (QT) division. QT is a tree structure for block partitions in which a node of size 4M x 4N can be divided into four child nodes of size 2M x 2N.
[0172] FIG. 6B illustrates a block partition structure by adopting binary tree (BT) division in the vertical direction.
[0173] 6C illustrates a block partition structure by adopting binary tree (BT) division in the horizontal direction. BT is a tree structure for block partitions in which a node of size 4M×4N can either be divided horizontally into two child nodes of size 4M×2N or vertically into two child nodes of size 2M×4N.
[0174] FIG. 6D illustrates a block partition structure by adopting ternary tree (TT) division in the vertical direction.
[0175] Figure 6E illustrates a block partition structure by adopting a ternary tree (TT) division in the horizontal direction. TT is a tree structure for block partitions in which a node of size 4Mx4N can be divided horizontally into three child nodes of sizes 4MxN, 4Mx2N, and 4MxN, respectively, or vertically into three child nodes of sizes Mx4N, 2Mx4N, and Mx4N, respectively. Among the three child nodes shown in Figure 6D or Figure 6E, the largest node is located in the center.
[0176] A quadtree plus binary tree (QTBT) is a quadtree plus binary tree structure in which a block is first divided using quadtree decomposition, and then each quadtree child node can be further divided using binary tree decomposition. A quadtree plus binary tree or ternary tree (QT-BT / TT) is a quadtree plus binary tree or ternary tree structure in which a block is first divided using quadtree decomposition, and then each quadtree child node can be further divided using binary tree or ternary tree decomposition.
[0177] For a block associated with a particular partition depth, encoder 20 determines which partition type (not including further divisions) to use and communicates the determined partition type to decoder 30 either explicitly or implicitly (e.g., the partition type may be derived from a predetermined rule). Encoder 20 may determine the partition type to use based on, for example, ascertaining the rate-distortion cost for the block using different partition types.
[0178] The term "block" in this invention is a generalized term that includes, but is not limited to, root blocks, blocks, sub-blocks, leaf nodes, and the like.
[0179] Video coding standards have introduced dual-tree (DT) coding in addition to single-tree (ST) coding used in the HEVC / H.265 standard. ST or DT is selected based on the slice or frame type (e.g., intra-frame or inter-frame, intra-slice or inter-slice). Under the single-tree coding mode, the luminance (or luma) and chrominance (or chroma) components share the same partitioning tree. Under the dual-tree coding mode, the luminance (or luma) and chrominance (or chroma) components are partitioned separately, i.e., using independent partitioning schemes for the luma and chroma components.
[0180] The picture compression level is controlled by a quantization parameter (QP), which may be fixed for the entire picture (e.g., by using the same quantization parameter value) or may have different quantization parameter values for different regions of the picture.
[0181] One solution for determining the quantization parameter is quantization parameter (QP) signaling at the coding unit (CU) level. This approach allows for flexible QP value changes for different regions of a picture, especially at some CU depths (i.e., partition depths that define layers of partitions). To signal the QP for a specific region of a picture, a delta QP signaling method is used. In this method, the predicted QP (QP c_pred) and the actual QP of the current region (i.e., delta QP) is signaled via the bitstream. The delta QP value and its granularity (e.g., the size of the partitioned blocks) are defined by an on / off control flag and a maximum depth (e.g., delta QP syntax element) in the picture parameter set (PPS). For all CUs with higher partition depths, the delta QP value is not signaled and may be inherited from the highest CU. In the HEVC standard, the QP value for a luminance (or luma) coding block (CB) is derived based on a predicted QP (qPY_PRED), which in turn depends on the CB position within the frame / slice / tile. Then, Qp Y The variables are in the following formula: Qp Y =((qPY_PRED+CuQpDeltaVal+52+2*QpBdOffsetY)%(52+QpBdOffsetY))-QpBdOffsetY (Formula 1) is derived by
[0182] where CuQpDeltaVal is the delta QP value signaled or derived for the coding unit (CU), and QpBdOffsetY is a constant offset depending on the luma bit depth (from the HEVC standard, this term corresponds to the "bit depth of the samples in the luma array"). Finally, the quantization parameter Qp' for the luma (or luma) component is Y is the following equation 2: Qp' Y =Qp Y +QpBdOffsetY (Equation 2) It can be calculated by:
[0183] The variables qPCb and qPCr are set equal to the value of QpC specified in the quantization table (e.g., Table 1) based on index qPi being equal to qPiCb or qPiCr, respectively, and qPiCb and qPiCr are derived according to Equation 3 as follows: qPiCb=Clip3(-QpBdOffsetC,57,QpY+pps_cb_qp_offset+slice_cb_qp_offset) qPiCr=Clip3(-QpBdOffsetC,57,QpY+pps_cr_qp_offset+slice_cr_qp_offset) (Formula 3)
[0184] where QpBdOffsetC is a constant offset depending on the chroma bit depth (from the HEVC standard, this term corresponds to "bit depth of samples of chroma array"), pps_cb_qp_offset or pps_cr_qp_offset is a fixed offset for the Cb or Cr component signaled by the picture parameter set (PPS), and slice_cb_qp_offset or slice_cr_qp_offset is a fixed offset for the Cb or Cr component signaled in the slice header.
number
[0185] The chroma quantization parameters for the Cb and Cr components (Qp'Cb and Qp'Cr) are derived according to Equation 5 as follows: Qp'Cb=qPCb+QpBdOffsetC (Formula 5) Qp'Cr=qPCr+QpBdOffsetC
[0186] It should be noted that the above-described delta QP mechanism is only valid for single-tree (ST) and cannot be applied to dual-tree (DT) because the luminance (or luma) and chrominance (or chroma) components may use different partitioning trees.
[0187] Generally, embodiments of the present invention relate to the field of video coding. In particular, embodiments of the present invention relate to delta QP signaling, which is part of an inverse quantizer in a video decoding device. Embodiments of the present invention propose different ways of applying a delta QP mechanism when a dual tree (DT) is applied.
[0188] Similar to the delta QP mechanism described above, which is only valid for single tree (ST), regardless of the type of tree (ST or DT), the chroma quantization parameters for the Cb and Cr components are given by Equation 6: Qp'Cb=qPCb+QpBdOffsetC (Formula 6) Qp'Cr=qPCr+QpBdOffsetC It is derived based on the qPi value according to
[0189] Here, qPCb and qPCr are derived based on a quantization table or a mapping table (e.g., Table 1) and depend on the qPi value. In contrast to the delta QP signaling for single trees, this embodiment of the present invention uses the following Equation 7: qPiCb=Clip3(-QpBdOffsetC,69,QpC basic +pps_cb_qp_offset+slice_cb_qp_offset) qPiCr=Clip3(-QpBdOffsetC,69,QpC basic +pps_cr_qp_offset+slice_cr_qp_offset) (Formula 7) Regardless of the type of tree (e.g., single tree or dual tree), it is responsible for calculating the qPi values for the chrominance (or chroma) components according to
[0190] where QpC basic is QP c_pred The base chroma block QP value depends on the value, and can be calculated in one of various ways described below.
[0191] It should be noted that the constant 69 in Equation 7 for calculating qPiCb and qPiCr is selected according to a quantization table (e.g., Table 1) assuming QP 63 as the maximum allowed, so this constant is calculated as the maximum QP value added to the maximum difference between qPi and QpC. In the general case, this constant may be predefined or signaled for some value.
[0192] The dual-tree (DT) coding approach assumes that the luma and chroma components have different partition trees, each with its own partitioning tree. This may result in one chroma block (i.e., a block in the chrominance component) corresponding to more than one luma block (i.e., a block in the luma component), or vice versa. Figure 8 shows an example for 4:2:0 chroma subsampling, where a whole chroma block corresponds to multiple partitioned luma blocks. The numbers in the figure represent co-located points (pixels) between the luma and chroma components (or planes).
[0193] 9 is an exemplary flowchart illustrating a procedure for performing inverse quantization on a current block of a picture. This procedure may be performed by a decoder. The picture has luminance and chrominance components, and the luminance and chrominance components are partitioned into multiple blocks by separate partition trees.
[0194] Step 902: Obtain one or more existing quantization parameter QP values from the received bitstream, where the one or more existing QP values relate to a current block in a chrominance component.
[0195] In this step, existing QP values relate to a current block (e.g., a block to be performed by inverse quantization). By way of example only, such existing QP values may comprise at least one of the following: a QP value for a co-located block in the luma component, a QP value of one or more neighboring blocks of the current block in the chroma components, and a QP value of one or more neighboring blocks of the co-located block in the luma component.
[0196] The co-located block in the luma component is the block that has a mapping relationship with the current block in the chroma component.
[0197] Step 904: Determine a QP value for the current block in the chrominance (or chroma) component based on one or more existing QP values.
[0198] QP value for a block in a chroma component (or chroma block QP value, i.e., QP c_pred , ) exist. In summary, a first set of methods focuses on determining chroma block QP values based on existing associated QP values (e.g., to be seen as predictions), a second set of methods is to determine chroma block QP values based on existing associated QP values (e.g., to be seen as predictions) and chrominance delta QP values (e.g., to be seen as deltas) signaled in the received bitstream, and a third set of methods is to determine chroma block QP values based on existing associated QP values (e.g., to be seen as predictions) and chrominance QP offset values (e.g., to be seen as adjustment offsets) signaled in the received bitstream.
[0199] Step 906: Perform inverse quantization on the current block in the chrominance component by using the determined QP value.
[0200] In this step, after determining the QP value for the current block in the chrominance component (or the chroma block QP value), inverse quantization is performed on that block in the chrominance component.
[0201] 10 is an exemplary flowchart illustrating a procedure for performing inverse quantization on a current block of a picture, which may be performed by an encoder.
[0202] Step 1010: In this step, quantization of the current block in the chrominance component is performed using a determined QP, which may be determined, for example, by user settings and / or by rate-distortion optimization, etc.
[0203] Step 1020: One or more existing quantization parameter QP values are obtained. The / these existing QP values are also included in the bitstream. The one or more existing QP values relate to the current block in the chrominance component.
[0204] Step 1030: A QP parameter for the current block in the chrominance component is determined / indicated based on one or more existing QP values and the determined QP value. In particular, a parameter is included in the bitstream to convey a value of the QP (determined QP) for the current block in the chrominance component, where the parameter is determined using one or more existing QP values. The processing may be performed by subtracting one or more existing QP values from the determined QP, or in other ways, for example, by a formula that also includes further parameters.
[0205] Step 1040: The QP parameters are then included in the bitstream. The inclusion in the bitstream may further include entropy coding, such as integer or arithmetic coding or any other variable length coding. The entropy coding may be context adaptive. However, these are merely examples, and the present disclosure may work with any kind of coding, including fixed length coding.
[0206] According to an embodiment, devices are provided for quantization and dequantization that can be used in each encoder and decoder, which have features corresponding to the encoding and decoding methods described above.
[0207] In particular, there is provided an apparatus for inverse quantization of a current block of a picture, where the picture has a luminance component and a chrominance component, and the luminance component and / or the chrominance component is divided into a plurality of blocks. The apparatus is represented in Fig. 11 as apparatus 1100. It further includes the following functional units (circuits):
[0208] A bitstream parser (also called a bitstream parsing unit (or circuit)) 1110 retrieves one or more existing quantization parameter QP values from the bitstream, where the one or more existing QP values relate to the current block in chrominance components, which may be any one or more of the chrominance components.
[0209] A QP determination unit (or circuit) 1120 determines a QP value for the current block in the chrominance component based on one or more existing QP values.
[0210] An inverse quantizer (also called an inverse quantization unit (or circuit)) 1130 performs inverse quantization on the current block in the chrominance component by using the determined QP value.
[0211] An apparatus 1200 shown in Fig. 12 is also provided for quantizing a current block of a picture. The picture has a luminance component and a chrominance component, and the luminance component and / or the chrominance component is divided into a plurality of blocks. The apparatus comprises: a quantizer (also called a quantization unit (or circuit)) 1210 that performs quantization on the current block in the chrominance component by using the determined QP value; a fetch unit (or circuit) 1220 for obtaining one or more existing quantization parameter QP values and including the one or more existing QP values in a bitstream, the one or more existing QP values relating to a current block in a chrominance component; a QP determination unit (or circuit) 1230 for determining a QP parameter for a current block in a chrominance component based on one or more existing QP values and the determined QP value; a bitstream generation unit (or circuit, also called a bitstream generator) 1240 for including QP parameters in the bitstream; It has.
[0212] The following is an embodiment for determining the chroma block QP value.
[0213] I. Determining Chroma Block QP Values Based on One or More Associated Existing QP Values In the first set of methods, three groups of methods are provided.
[0214] A. First group of methods: In this group of methods, the chroma block QP value QP c_pred is QP c_pred_luma The QP is calculated based on the co-located luma QP value, denoted as
[0215] (1) The first method is that the QP value for the current block in the chrominance component (i.e., the chroma block QP value) is determined based on the QP value of the co-located block in the luminance component. A point in the chroma plane (or component) is selected (represented as a mapping point, e.g., point C5), and the QP c_pred_luma is determined to be the QP value from the block that is co-located with the current mapping point (e.g., point L5) in the luma (or luminance) plane. For example, if point C5 in Figure 8 is selected as the mapping point, QPc_pred_luma is equal to the luma QP value from the corresponding L5 point in the luma coding block (e.g., the block in which point L5 is located). It should be understood that any of the chroma points can be selected as the mapping point, including but not limited to the above example of Figure 8.
[0216] More specifically, Equation 7 can be rewritten in the following manner: qPiCb=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cb_qp_offset+slice_cb_qp_offset) qPiCr=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cr_qp_offset+slice_cr_qp_offset) (Equation 7.1)
[0217] where QpY_basic is determined depending on the partitioning tree type as follows: - If tree type is equal to SINGLE_TREE, QpY_basic is set equal to QpY. Otherwise, QpY_basic is set equal to the QpY value of the co-located luma CU containing the luma sample with coordinates (xCb+cbWidth / 2, yCb+cbHeight / 2).
[0218] And (xCb, yCb) identifies the top-left sample of the luma coding block that is co-located with the current chroma coding block relative to the top-left luma sample of the current picture.
[0219] Furthermore, the QpY value is calculated using the following formula: QpY=((qPY_PRED+CuQpDeltaVal+64+2*QpBdOffsetY)%(64+QpBdOffsetY))-QpBdOffsetY It can be calculated according to:
[0220] where qPY_PRED, CuQpDeltaVal, QpBdOffsetY are calculated in the usual way for the co-located luma CU. The constants have been changed to 64.
[0221] That is, in an exemplary implementation, the QP of the current block in the chrominance component is determined based on the (existing) parameters of the co-located block. The co-located block may be a luminance component block that is co-located with the current block. Note that in general, the partitioning of luminance (coding tree) blocks may differ from the partitioning of chrominance blocks (coding tree). Thus, there may be more (or fewer, or the same number) luminance blocks covering the same picture area as the same chrominance block. Thus, in this example, the co-located block is determined as a luminance block that covers an area containing a specific, pre-defined sample of the current chrominance block. For example, the specific sample may be the top-left sample in the bottom-right quarter of the current chrominance block. This exemplary sample location is located near (or at) the center or the current block. However, the present disclosure is not limited to this specific sample location. Any other location, such as top-left, may also be used.
[0222] Appendix A provides a detailed example of the quantization parameter derivation process.
[0223] (2) The second method is that the QP value for the current block in the chrominance component (i.e., the chroma block QP value) is determined based on the weighted sum of the existing QP values of one or more neighboring blocks of the co-located block in the luminance component. In this method, the QP c_pred_luma is calculated based on the same position of the luma QP values from several specific points with the same weight. For example, QP c_pred_luma is the following expression:
number
[0224] (3) The third method is QP c_pred_luma is calculated based on the intersection of chroma coding block (CU) values and co-located luma CUs in one of the following ways:
[0225] Option 1: QP when a chroma CU is completely covered by one luma CU c_pred_luma is taken from Luma CU.
[0226] Option 2: If a chroma CU is covered by more than one luma CU, and if all such luma CUs have the same QP value, then c_pred_luma is taken from Luma CU.
[0227] Option 3: When a chroma CU is covered by more than one luma CU, and not all such luma CUs have the same QP value, c_pred_lumais taken from the luma CU based on a weighted function of the QP values for the luma CU, where the weight of each luma CU delta QP is determined by the spatial correspondence between the current chroma CU and the luma CU.
[0228] B. Second group of methods: In this method group, the QP prediction of a chroma CU is calculated based on the QP values of its neighboring chroma CUs (i.e., the QP values of one or more neighboring blocks of the block in the chrominance component), and the QP c_pred_chroma That is, the QP value for the current block in the chrominance component (i.e., the chroma CU QP value) is determined based on the weighted sum of the existing QP values of the neighboring blocks of the current block in the chrominance component. The methods in this group can work with any neighboring chroma CU that is already available at the decoder side. In that case, the QP c_pred_chroma is expressed as follows:
number
[0229] C. Third Group of Methods: In this group of methods, the QP value (or prediction) of a chroma CU is calculated by any of the above methods. c_pred_luma and QP c_pred_chroma The chroma CU QP prediction is calculated based on both the QP c_pred_mixedIn this method, the QP value for the current block in the chrominance component (i.e., the QP value of the chroma CU) is determined based on both the QP value of the co-located block in the luminance component and the weighted sum of the existing QP values of the neighboring blocks of the current block in the chrominance component. Alternatively, the QP value for the current block in the chrominance component (i.e., the QP value of the chroma CU) is determined based on both the weighted sum of the existing QP values of the neighboring blocks of the current block in the chrominance component and the weighted sum of the existing QP values of the neighboring blocks of the co-located block in the luminance component. For example, QP c_pred_mixed is QP c_pred_luma and QP c_pred_chroma In the example, it may be calculated as the weighted sum of:
number
[0230] II. Second Set of Methods for Determining Chroma Block QP Values In this method set, a QP value (or chroma block QP value) for a current block in a chrominance component is determined based on one or more existing QP values and a chrominance delta QP value signaled in the received bitstream, where the one or more existing QP values are associated with the current block in the chrominance component.
[0231] This section describes the QpC when dual trees are possible. basic Various approaches for determining the derivative (or delta) are described.
[0232] (1) First Method: In this method, QpC basic The value is the QP calculated by one of the corresponding approaches above in the first set of methods. c_pred_luma , Q.P. c_pred_chroma , or QP c_pred_mixedThe delta-chroma QP is taken directly from one of the values. In this way, when dual trees are used, luma CUs have syntax elements for delta-luma QP representation, and chroma CUs do not have any syntax elements for delta-chroma QP representation. [Table 2] [Table 3]
[0233] Tables 2 and 3 give two examples of how the notification mechanism can be implemented in this manner.
[0234] In this way, QpC basic is QP c_pred which is then equal to QP c_pred_luma , Q.P. c_pred_chroma , or QP c_pred_mixed In that case, the qPi values for the Cb and Cr components can be equal to one of the following Equation 11: qPiCb=Clip3(-QpBdOffsetC,69,QpC basic +pps_cb_qp_offset+slice_cb_qp_offset) qPiCr=Clip3(-QpBdOffsetC,69,QpC basic +pps_cr_qp_offset+slice_cr_qp_offset) (Formula 11) where QpC basic ∈{QP c_pred_luma ,QP c_pred_chroma ,QP c_pred_mixed} and QP c_pred_luma ,QP c_pred_chroma ,QP c_pred_mixedEach of QpCbasic and QpCbasic can be derived by one of the methods described above. More specifically, combining the present method with the above method 1 of QpCbasic derivation, Equation 11 can be rewritten as follows: qPiCb=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cb_qp_offset+slice_cb_qp_offset) qPiCr=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cr_qp_offset+slice_cr_qp_offset) (Equation 11.1)
[0235] where QpY_basic is determined depending on the partitioning tree type as follows: - If tree type is equal to SINGLE_TREE, QpY_basic is set equal to QpY. Otherwise, QpY_basic is set equal to the QpY value of the co-located luma CU containing the luma sample with coordinates (xCb+cbWidth / 2, yCb+cbHeight / 2).
[0236] And (xCb, yCb) identifies the top-left sample of the luma coding block that is co-located with the current chroma coding block relative to the top-left luma sample of the current picture.
[0237] And QpY is expressed by the following formula: QpY=((qPY_PRED+CuQpDeltaVal+64+2*QpBdOffsetY)%(64+QpBdOffsetY))-QpBdOffsetY (Equation 11.1a) It can be calculated according to:
[0238] where qPY_PRED, CuQpDeltaVal, QpBdOffsetY are calculated in the conventional manner for the co-located luma CU.
[0239] The constant 69 in Equations 11 and 11.1 represents the maximum possible QP value increased by 6, and the constant 64 in Equation 11.1a represents the maximum possible QP value increased by 1. Appendix A provides a detailed example of the quantization parameter derivation process.
[0240] In this manner, the delta_qp signaling function may be implemented, for example, in the following manner. [Table 4]
[0241] In Table 4, the syntax element cu_qp_delta_enabled_flag represents a high-order flag specifying whether delta QP is allowed for the current slice / picture / sequence, and the flag IsCuQpDeltaCoded specifies whether delta QP is signaled at the current depth; for CU blocks at higher or equal depth, delta_qp is inherited from the closest signaled one. The syntax elements cu_qp_delta_enabled_flag and diff_cu_qp_delta_depth used for deriving the IsCuQpDeltaCoded flag can be signaled in a picture parameter set (PPS). [Table 5]
[0242] More specifically, cu_qp_delta_enabled_flag equal to 1 specifies that the diff_cu_qp_delta_depth syntax element is present in the PPS and that cu_qp_delta_abs and cu_qp_delta_sign_flag may be present in the transform unit syntax. cu_qp_delta_enabled_flag equal to 0 specifies that the diff_cu_qp_delta_depth syntax element is not present in the PPS and that cu_qp_delta_abs and cu_qp_delta_sign_flag are not present in the transform unit syntax.
[0243] cu_qp_delta_abs specifies the absolute value of the difference CuQpDeltaVal between the luma quantization parameter of the current coding unit and its prediction.
[0244] cu_qp_delta_sign_flag specifies the sign of CuQpDeltaVal as follows: If -cu_qp_delta_sign_flag is equal to 0, the corresponding CuQpDeltaVal has a positive value. Otherwise (cu_qp_delta_sign_flag is equal to 1), the corresponding CuQpDeltaVal has a negative value. If cu_qp_delta_sign_flag is not present, it is inferred to be equal to 0. If cu_qp_delta_abs is present, the variables IsCuQpDeltaCoded and CuQpDeltaVal are derived as follows: IsCuQpDeltaCoded=1 CuQpDeltaVal=(-1) cu_qp_delta_sign_flag *cu_qp_delta_abs The value of CuQpDeltaVal should be in the range of -(32+QpBdOffsetY / 2) to +(31+QpBdOffsetY / 2) inclusive.
[0245] It should be noted that this method can be used for qPi parameter derivation of the Cb and Cr components either for all chroma CU depths or only for depths smaller than some predefined value; in the latter case, CU blocks located at higher or equal depths should inherit the values from the closest processed one.
[0246] Alternatively, the first method may also signal a separate syntax for the delta QP of the chroma components. [Table 6] [Table 7]
[0247] Tables 6 and 7 provide two examples of separate delta QP syntax signaling for chroma components, either for chroma CUs only in the dual tree case, or for both chroma CUs in the dual tree case and a single CU in the separate tree case. The procedures delta_qp_y() and delta_qp_c() from Tables 6 and 7 are implemented in a similar manner to the delta_qp() procedure shown in Table 4. It should be noted that in the case of separate signaling of delta QP syntax for chroma CUs in the dual tree case and / or for chroma planes in a single CU, the PPC-level control flag cu_qp_delta_enabled_flag in Table 4 can be implemented once (together) for both luma and chroma components, or separately into two control flags cu_qp_delta_enabled_flag_luma and cu_qp_delta_enabled_flag_chroma.
[0248] Assuming the specific case where this method is combined with the above method 1 of QpCbasic derivation, Equation 11 for either a chroma CU in the dual tree case or (if applicable) both a chroma CU in the dual tree case and a single CU in the separate tree case can be rewritten as follows: qPiCb=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cb_qp_offset+slice_cb_qp_offset+delta_qp_c) qPiCr=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cr_qp_offset+slice_cr_qp_offset+delta_qp_c) (Equation 11.2)
[0249] where QpY_basic is determined depending on the partitioning tree type as follows: - If tree type is equal to SINGLE_TREE, QpY_basic is set equal to QpY. Otherwise, QpY_basic is set equal to the QpY value of the co-located luma CU containing the luma sample with coordinates (xCb+cbWidth / 2, yCb+cbHeight / 2).
[0250] And (xCb, yCb) identifies the top-left sample of the luma coding block that is co-located with the current chroma coding block relative to the top-left luma sample of the current picture.
[0251] And the QpY value is calculated using the following formula: QpY=((qPY_PRED+CuQpDeltaVal+64+2*QpBdOffsetY)%(64+QpBdOffsetY))-QpBdOffsetY (Equation 11.3) It can be calculated according to:
[0252] where qPY_PRED, CuQpDeltaVal, QpBdOffsetY are calculated in the conventional manner for the co-located luma CU.
[0253] The constant 69 in equation 11.2 represents the maximum possible QP value incremented by six, and the constant 64 in equation 11.3 represents the maximum possible QP value incremented by one.
[0254] Alternatively, the delta_qp_c value can be added to the final equations for Qp'Cb and Qp'Cr: Qp'Cb=QpCb+QpBdOffsetC+delta_qp_c Qp'Cr=QpCr+QpBdOffsetC+delta_qp_c
[0255] In this case, Equation 11.1 is used to calculate the qPiCb and qPiCr values, and then the calculation of the QpCb and QpCr values is performed in the conventional manner based on qPiCb and qPiCr using the chroma QP mapping function, which is shown in Table 17.
[0256] (2) Second Method: In this method, QpC basic The QP value is calculated using one of the corresponding prediction approaches above. c_pred_luma , Q.P. c_pred_chroma , or QP c_pred_mixed The delta chroma CU is derived as the sum of one of the delta chroma CU values and the CuQpChromaDeltaVal value that may be signaled in the chroma CU. In this way, in the case of a dual tree, the luma CU has syntax elements for the delta luma CU representation, and the chroma CU has syntax elements for the different representations of the delta chroma CU. [Table 8]
[0257] In this way, QpC basic can be calculated by the following Equation 12: QpC basic =QPc_pred+CuQpChromaDeltaVal (Formula 12) where QP c_pred ∈{QP c_pred_luma ,QP c_pred_chroma ,QP c_pred_mixed} and QP c_pred_luma ,QP c_pred_chroma ,QP c_pred_mixed where each of CuQpChromaDeltaVal is the delta QP value of the chroma block, which may be derived by one of the methods above, and CuQpChromaDeltaVal is the delta QP value of the chroma block, which may be derived by the following Equation 13: CuQpChromaDeltaVal =cu_chroma_qp_delta_abs*(1-2*cu_chroma_qp_delta_sign_flag) (Formula 13)
[0258] In that case, the qPi values of the Cb and Cr components can be calculated by the following Equation 14: qPiCb=Clip3(-QpBdOffsetC,69,QpC basis +pps_cb_qp_offset+slice_cb_qp_offset) qPiCr=Clip3(-QpBdOffsetC,69,QpC basic +pps_cr_qp_offset+slice_cr_qp_offset) (Formula 14)
[0259] In this manner, the delta_qp_luma and delta_qp_chroma signaling functions may be implemented, for example, in the following manner. [Table 9]
[0260] In Table 9, the syntax element cu_luma_qp_delta_enabled_flag represents a high-level flag specifying whether delta luma QP is allowed for the current slice / picture / sequence, and the flag IsLumaCuQpDeltaCoded specifies whether delta QP is signaled at the current depth; for luma CU blocks at higher or equal depth, the delta_luma_qp() element is inherited from the closest signaled one. The syntax elements cu_luma_qp_delta_enabled_flag and diff_cu_luma_qp_delta_depth used for deriving the IsLumaCuQpDeltaCoded flag can be signaled in the PPS. [Table 10]
[0261] In Table 10, the syntax element cu_chroma_qp_delta_enabled_flag represents a high-level flag specifying whether delta chroma CUs are allowed for the current slice / picture / sequence, and the flag IsChromaCuQpDeltaCoded specifies whether delta QP is signaled at the current depth; for chroma CU blocks at higher or equal depth, the delta_chroma_qp() element is inherited from the closest signaled one. The syntax elements cu_chroma_qp_delta_enabled_flag and diff_cu_chroma_qp_delta_depth used for deriving the IsChromaCuQpDeltaCoded flag can be signaled in the PPS. [Table 11]
[0262] (3) Third Method: In this method, QpC basic The QP value is calculated using one of the corresponding prediction approaches above. c_pred_luma , Q.P. c_pred_chroma , or QPc_pred_mixed The QpChromaDeltaVal is derived as the sum of one of the QpChromaDeltaVal values and the CuQpChromaDeltaVal value, which can be signaled in chroma CUs only for chroma CU depths at some predefined depths. For all chroma CUs with depths higher than the predefined ones, the QpChromaDeltaVal is basic The value is inherited from the closest processed one. In this way, in the case of a dual tree, luma CUs have syntax elements for delta luma QP representation, and chroma CUs have syntax elements for delta chroma QP representation only for chroma CUs with depths equal to or less than the predefined one.
[0263] In this method, the delta QP values may be signaled according to Tables 5 and 6, and the delta_qp_chroma() function may be implemented in the following way: [Table 12]
[0264] The IsChromaCuQpDeltaCoded flag in Table 12 is equal to 0 only for chroma CUs with depth less than or equal to the predefined one.
[0265] (4) Fourth Method: In this method, a special syntax element can specify which type of prediction calculation is used. The high-level element cu_qp_chroma_der_type is signaled in one of the codec parameter sets, e.g., PPC, and can specify which type of any of the above predictor calculation approaches is used. [Table 13]
[0266] In this manner, cu_qp_chroma_der_type can specify any group of prediction types, where any particular predefined prediction above can be used within the group.
[0267] It should be noted that cu_qp_chroma_der_type represents an index in the set P, where the QpC of the Cb and Cr components basic The value is calculated by one of the above methods, from 1 to 3. c_pred It is derived based on
[0268] (5) Fifth Method: In this method, cu_qp_chroma_der_type can specify one specific prediction type among all groups. For example, assume a set of possible predictions P = {ChromaQpPredictionLuma1, , ChromaQpPredictionChroma1, ChromaQpPredictionMixed1, , ChromaQpPredictionMixedN}.
[0269] It should be noted that cu_qp_chroma_der_type represents an index in the set P, where the QpC of the Cb and Cr components basic The value is calculated by one of the above methods, from 1 to 3. c_pred is a point derived based on c_pred =P[cu_qp_chroma_qp_der_type].
[0270] III. Third Set of Methods for Determining Chroma Block QP Values The QP value for the current block in the chrominance component is determined based on one or more existing QP values and a chrominance QP offset value (or delta QP offset) signaled in the received bitstream, where the one or more existing QP values are associated with the current block in the chrominance component.
[0271] This section discloses the use of the chroma QP offset mechanism when separate trees (ST) are possible.
[0272] In the first method, the QP values Qp′Cb and Qp′Cr of Cb and Cr are calculated based on qPiCb and qPiCr, where qPiCb and qPiCr are calculated according to the following Equation 15: qPiCb=Clip3(-QpBdOffsetC,69,QpC basic +pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb) qPiCr=Clip3(-QpBdOffsetC,69,QpC basic +pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetCr) (Formula 15) where QpC basic The QP value is calculated using one of the corresponding prediction approaches above. c_pred_luma , Q.P. c_pred_chroma , or QP c_pred_mixed The CuQpOffsetCb / CuQpOffsetCr variables are derived based on the cb_qp_offset_list and cu_chroma_qp_offset_idx syntax elements according to the following Equation 16: CuQpOffsetCb=cb_qp_offset_list[cu_chroma_qp_offset_idx] CuQpOffsetCr=cr_qp_offset_list[cu_chroma_qp_offset_idx] (Formula 16)
[0273] The syntax elements cb_qp_offset_list and cr_qp_offset_list are offset tables that can be signaled in a parameter set, for example in a PPS, in the following way. [Table 14]
[0274] In Table 14, chroma_qp_offset_list_enabled_flag specifies whether the chroma QP list mechanism is used, chroma_qp_offset_list_len_minus1 specifies the length of the offset list for the Cb and Cr components, and cb_qp_offset_list and cr_qp_offset_list specify the possible offsets for the Cb and Cr components.
[0275] cu_chroma_qp_offset_idx identifies particular elements in cb_qp_offset_list and cr_qp_offset_list that may be used for the calculation of CuQpOffsetCb and CuQpOffsetCr.
[0276] Table 15 shows an example of cu_chroma_qp_offset_idx signaling. [Table 15]
[0277] The syntax of the delta QP offset when separate trees are possible may be set forth in Table 16 below. [Table 16]
[0278] According to another embodiment of the present invention, a method for the derivation process of the quantization parameters is described as follows.
[0279] Appendix A. Quantization parameter derivation process In this process, the luma quantization parameter Qp' Y and the chroma quantization parameter QP' Cb and Qp' Cr is derived.
[0280] The input to this process is the luma position (xCb, yCb) that identifies the top - left sample of the current luma coding block with respect to the top - left luma sample of the current picture when the tree type is equal to SINGLE_TREE or DUAL_TREE_LUMA, and (xCb, yCb) that identifies the top - left sample of the luma coding block at the same position as the current chroma coding block with respect to the top - left luma sample of the current picture when the tree type is equal to DUAL_TREE_CHROMA.
[0281] In this process, the variables QpY, the luma quantization parameter Qp’Y, and the chroma quantization parameters Qp’Cb and Qp’Cr are derived.
[0282] The luma position (xQg, yQg) identifies the top - left luma sample of the current quantization group with respect to the top - left luma sample of the current picture. The horizontal and vertical positions xQg and yQg are set equal to xCb-(xCb&((1<<Log2MinCuQpDeltaSize)-1)) and yCb-(yCb&((1<<Log2MinCuQpDeltaSize)-1)), respectively. The luma size Log2MinCuQpDeltaSize of the quantization group determines the luma size of the smallest area within the coding tree block that shares the same qPY_PRED.
[0283] The predicted luma quantization parameter qPY_PRED is derived by the following ordered steps.
[0284] 1. The variable qPY_PREV is derived as follows: - qPY_PREV is set equal to SliceQpY when one or more of the following conditions are true: - The current quantization group is the first quantization group within the slice. - The current quantization group is the first quantization group within the tile. - The current quantization group is the first quantization group in the coding tree block row and entropy_coding_sync_enabled_flag is equal to 1. - Otherwise, qPY_PREV is set equal to the luma quantization parameter QpY of the last coding unit in the previous quantization group in decoding order.
[0285] The availability derivation process for a block in z-scan order specified in Section 2.XXX is invoked with the location (xCurr, yCurr) set equal to (xCb, yCb) and the adjacent location (xNbY, yNbY) set equal to (xQg-1, yQg) as input, and the output is assigned to available A. The variable QpY_A is derived as follows: - QpY_A is set equal to qPY_PREV if one or more of the following conditions are true: - AvailableA equals FALSE. - The coding tree block address ctbAddrA of the coding tree block containing the luma coding block covering the luma position (xQg-1, yQg) is not equal to CtbAddrInTs, then ctbAddrA is derived as follows: xTmp=(xQg-1)>>Log2MinTrafoSize yTmp=yQg>>Log2MinTrafoSize minTbAddrA=MinTbAddrZs[xTmp][yTmp] ctbAddrA=minTbAddrA >>(2*(CtbLog2SizeY-Log2MinTrafoSize)) Otherwise, QpY_A is set equal to the luma quantization parameter QpY of the coding unit containing the luma coding block covering (xQg-1, yQg).
[0286] The availability derivation process for a block in z-scan order specified in Section 3.XXX is invoked with the location (xCurr, yCurr) set equal to (xCb, yCb) and the adjacent location (xNbY, yNbY) set equal to (xQg, yQg-1) as input, and the output is assigned to available B. The variable QpY_B is derived as follows: - QpY_B is set equal to qPY_PREV if one or more of the following conditions are true: - AvailableB equals FALSE. - The coding tree block address ctbAddrB of the coding tree block containing the luma coding block covering luma position (xQg, yQg-1) is not equal to CtbAddrInTs, then ctbAddrB is derived as follows: xTmp=xQg>>Log2MinTrafoSize yTmp=(yQg-1)>>Log2MinTrafoSize minTbAddrB=MinTbAddrZs[xTmp][yTmp] ctbAddrB=minTbAddrB >>(2*(CtbLog2SizeY-Log2MinTrafoSize)) - Otherwise, QpY_B is set equal to the luma quantization parameter QpY of the coding unit containing the luma coding block covering (xQg, yQg-1).
[0287] 4. The predicted luma quantization parameter qPY_PRED is derived as follows: qPY_PRED=(QpY_A+QpY_B+1)>>1
[0288] The variable QpY is derived as follows: QpY=((qPY_PRED+CuQpDeltaVal+64+2*QpBdOffsetY)%(64+QpBdOffsetY))-QpBdOffsetY
[0289] Luma quantization parameter Qp' Y is derived as follows: Qp' Y =QpY+QpBdOffsetY
[0290] The variables QpCb and QpCr are set equal to the values of QpC indicated in Table 17 based on index qPi being equal to qPiCb and qPiCr, respectively, and qPiCb and qPiCr being derived as follows: qPiCb=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cb_qp_offset+slice_cb_qp_offset) qPiCr=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cr_qp_offset+slice_cr_qp_offset)
[0291] where QpY_basic is determined depending on the partitioning tree type as follows: - If tree type is equal to SINGLE_TREE, QpY_basic is set equal to QpY. Otherwise, QpY_basic is set equal to the QpY value of the co-located luma CU containing the luma sample with coordinates (xCb+cbWidth / 2, yCb+cbHeight / 2).
[0292] Chroma quantization parameter Qp' for Cb and Cr components Cb and Qp' Cr is derived as follows: Qp' Cb =QpCb+QpBdOffsetC Qp' Cr =QpCr+QpBdOffsetC [Table 17]
[0293] According to an example of the first aspect of the present invention, wherein the method further comprises determining a QP value for the current block in the chrominance component based on a weighted sum of existing QP values of one or more neighboring blocks of the co-located block in the luminance component.
[0294] As an example only, since there are four neighboring blocks of the co-located block in the luminance component, the QP value for the current block in the chrominance component is the average sum of the QP values for those four neighboring blocks of the co-located block in the luminance component. It should sometimes be mentioned here that there may be no neighboring blocks of the co-located block. In this situation, it is desirable to determine the QP value of the block in the chrominance component using other existing QP values.
[0295] According to an example of the first aspect of the present invention, the method further comprises determining a QP value for the current block in the chrominance component based on a weighted sum of existing QP values of neighboring blocks of the current block in the chrominance component.
[0296] According to an example of the first aspect of the present invention, the method further comprises determining a QP value for the current block in the chrominance component based on both the QP value of a co-located block in the luminance component and a weighted sum of existing QP values of neighboring blocks of the current block in the chrominance component.
[0297] According to an example of the first aspect of the present invention, wherein the method further comprises determining a QP value for the current block in the chrominance component based on both a weighted sum of existing QP values of neighboring blocks of the current block in the chrominance component and a weighted sum of existing QP values of neighboring blocks of a co-located block in the luminance component.
[0298] The following is a description of the application of the encoding and decoding methods shown in the above embodiments and the system using them.
[0299] 13 is a block diagram showing a content delivery system 3100 for implementing a content distribution service. The content delivery system 3100 includes a capture device 3102, a terminal device 3106, and optionally a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication link 3104. The communication link may include the communication channel 13 described above. The communication link 3104 may include, but is not limited to, WIFI, Ethernet, cable, wireless (3G / 4G / 5G), USB, or any combination thereof.
[0300] The capture device 3102 may generate data and encode it using the encoding method described in the above embodiment. Alternatively, the capture device 3102 may distribute the data to a streaming server (not shown), which encodes the data and sends the encoded data to the terminal device 3106. The capture device 3102 may include, but is not limited to, a camera, a smartphone or pad, a computer or laptop, a video conferencing system, a PDA, an in-vehicle device, or any combination thereof. For example, the capture device 3102 may include the source device 12 described above. If the data includes video, the video encoder 20 included in the capture device 3102 may actually perform the video encoding process. If the data includes audio (i.e., voice), the audio encoder included in the capture device 3102 may actually perform the audio encoding process. For some practical scenarios, the capture device 3102 distributes the encoded video and audio data by multiplexing them together. In other practical scenarios, for example in a video conferencing system, the encoded audio data and the encoded video data are not multiplexed, and the capture device 3102 distributes the encoded audio data and the encoded video data separately to the terminal device 3106.
[0301] In the content delivery system 3100, a terminal device 3106 receives and plays the encoded data. The terminal device 3106 may be a device with data reception and recovery capabilities, such as a smartphone or pad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a set-top box (STB) 3116, a video conferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, an in-vehicle device 3124, or any combination thereof, capable of decoding the encoded data. For example, the terminal device 3106 may include the destination device 14 described above. If the encoded data includes video, the video decoder 30 included in the terminal device is prioritized to perform video decoding. If the encoded data includes audio, the audio decoder included in the terminal device is prioritized to perform audio decoding.
[0302] For terminals with a display, such as a smartphone or pad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a personal digital assistant (PDA) 3122, or an in-vehicle device 3124, the terminal device can provide the decoded data to its display. For terminals without a display, such as an STB 3116, a video conferencing system 3118, or a video surveillance system 3120, an external display 3126 is contacted therein to receive and display the decoded data.
[0303] When each device in this system performs encoding or decoding, the picture encoding device or picture decoding device shown in the above embodiments can be used.
[0304] 14 is a diagram illustrating an example structure of the terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, the protocol processing unit 3202 analyzes the transmission protocol of the stream, which may include, but is not limited to, Real-Time Streaming Protocol (RTSP), HyperText Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real-Time Transport Protocol (RTP), Real-Time Messaging Protocol (RTMP), or any combination thereof.
[0305] After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to the demultiplexing unit 3204. The demultiplexing unit 3204 can separate the multiplexed data into encoded audio data and encoded video data. As mentioned above, in some practical scenarios, for example, in a video conferencing system, the encoded audio data and the encoded video data are not multiplexed. In this situation, the encoded data is sent to the video decoder 3206 and the audio decoder 3208 without passing through the demultiplexing unit 3204.
[0306] Through the demultiplexing process, a video elementary stream (ES), an audio ES, and optionally, subtitles are generated. A video decoder 3206, which includes the video decoder 30 as described in the above embodiment, decodes the video ES by the decoding method as shown in the above embodiment to generate video frames, and supplies this data to a synchronization unit 3212. An audio decoder 3208 decodes the audio ES to generate audio frames, and supplies this data to the synchronization unit 3212. Alternatively, the video frames may be stored in a buffer (not shown in FIG. 14 ) before being supplied to the synchronization unit 3212. Similarly, the audio frames may be stored in a buffer (not shown in FIG. 14 ) before being supplied to the synchronization unit 3212.
[0307] The synchronization unit 3212 synchronizes the video and audio frames and provides the video / audio to the video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information, which may be coded in a syntax using time stamps for the presentation of the coded audio and visual data and for the delivery of the data stream itself.
[0308] If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes them with the video and audio frames, and provides the video / audio / subtitles to the video / audio / subtitle display 3216 .
[0309] The present invention is not limited to the above system, and either the picture encoding device or the picture decoding device in the above embodiment can be incorporated into other systems, for example, a car system.
[0310] In a first example, there is provided a method for inverse quantization of a current block of a picture, the method being executed by a decoder, the picture having a luminance component and a chrominance component, the luminance component and / or the chrominance component being divided into a plurality of blocks, the method comprising the steps of: obtaining one or more existing quantization parameter QP values from a received bitstream, the one or more existing QP values being related to the current block in the chrominance component; determining a QP value for the current block in the chrominance component based on the one or more existing QP values; and performing inverse quantization on the current block in the chrominance component by using the determined QP value.
[0311] For example, the one or more existing QP values include at least one of the following: a QP value of a co-located block in the luminance component; an existing QP value of one or more neighboring blocks of the co-located block in the luminance component; and an existing QP value of one or more neighboring blocks of the current block in the chrominance component.
[0312] In an example implementation, the method further comprises determining a QP value for the current block in the chrominance component based on a QP value of a co-located block in the luminance component.
[0313] Alternatively or additionally, determining a QP value for a current block in the chrominance component based on a QP value of a co-located block in the luminance component may include the steps of: determining a luminance block that is co-located with the top left sample in the lower right quarter of the current chrominance block; extracting a QP value (QpY_basic) of the determined luminance block; and calculating the QP value (QpY_basic) using the following formula: qPiCb=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cb_qp_offset+slice_cb_qp_offset), and / or qPiCr=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cr_qp_offset+slice_cr_qp_offset) or determining qPiCb and qPiCr parameters for the current chrominance block by using a new equation derived from the following equation; and determining a QP value for the current block in the chrominance component based on the qPiCb and qPiCr parameters or values.
[0314] In an exemplary implementation, the QP value for the current block in the chrominance component is calculated using the following formula: Qp'Cb=QpCb+QpBdOffsetC+delta_qp_c, and / or Qp'Cr=QpCr+QpBdOffsetC+delta_qp_c, or according to a new formula derived from the following formula, where QpCb and QpCr are obtained from the qPiCb and qPiCr parameters by applying a chroma QP mapping function:
[0315] For example, determining a QP value for a current block in the chrominance component based on the QP value of a co-located block in the luminance component may include the steps of: determining a luminance block that is co-located with the top-left sample in the lower right quarter of the current chrominance block; extracting the QP value (QpY_basic) of the determined luminance block; and calculating the QP value (QpY_basic) using the following formula: qPiCb=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cb_qp_offset+slice_cb_qp_offset+delta_qp_c), and / or qPiCr=Clip3(-QpBdOffsetC,69,QpY_basic+pps_cr_qp_offset+slice_cr_qp_offset+delta_qp_c), Alternatively, the method may include determining qPiCb and qPiCr parameters for the current chrominance block by using a new equation derived from the following equation, and determining a QP value for the current block in the chrominance component based on the qPiCb and qPiCr parameters or values:
[0316] In some example implementations, the method is applied to a single CU, and the co-located block in the luminance component is equal to the current block.
[0317] For example, the method may be applied to the luma and chroma planes together based on one PPS signaling control flag (e.g., cu_qp_delta_enabled_flag), and if the control flag (e.g., cu_qp_delta_enabled_flag) is equal to true, the method may be applied for both luma and chroma QP derivation, or if the control flag (e.g., cu_qp_delta_enabled_flag) is equal to false, the method may not be applied for both luma and chroma QP derivation.
[0318] In some example implementations, the method is applied separately for the luma and chroma planes based on two PPS-based control flags (e.g., cu_qp_delta_enabled_flag_luma and cu_qp_delta_enabled_flag_chroma), where if a first control flag (e.g., cu_qp_delta_enabled_flag_luma) is equal to true, the method is applied for luma QP derivation, or if the first control flag (e.g., cu_qp_delta_enabled_flag_luma) is equal to false, the method is not applied for luma QP derivation, and / or if a second control flag (e.g., cu_qp_delta_enabled_flag_chroma) is equal to true, the method is applied for chroma QP derivation, or if the second control flag (e.g., cu_qp_delta_enabled_flag_chroma) is equal to false, the method is not applied for chroma QP derivation.
[0319] For example, the method further comprises determining a QP value for the current block in the chrominance component based on a weighted sum of existing QP values of one or more neighboring blocks of the co-located block in the luminance component.
[0320] Alternatively or additionally, the method further comprises determining a QP value for the current block in the chrominance component based on a weighted sum of existing QP values of one or more neighboring blocks of the current block in the chrominance component.
[0321] Alternatively, or in addition, the method further comprises a step of determining a QP value for the current block in the chrominance component based on both the QP value of a co-located block in the luminance component and a weighted sum of existing QP values of one or more neighboring blocks of the current block in the chrominance component.
[0322] Alternatively or additionally, the method further comprises a step of determining a QP value for the current block in the chrominance component based on both a weighted sum of existing QP values of neighboring blocks of the current block in the chrominance component and a weighted sum of existing QP values of neighboring blocks of the co-located block in the luminance component.
[0323] In some example implementations, the method further includes determining a QP value for the current block in the chrominance component based on one or more existing QP values and at least one of a next chrominance delta QP value conveyed in the received bitstream or a chrominance QP offset value conveyed in the received bitstream.
[0324] In some example implementations, the method further includes obtaining a partition depth value of the current block, and if the partition depth value is below a threshold, determining a QP value for the current block in the chrominance component based on one or more existing QP values and a chrominance delta QP value conveyed in the received bitstream.
[0325] For example, the threshold may be determined based on a predefined number or a number conveyed in a parameter set.
[0326] For example, the luminance and chrominance components may be partitioned into multiple blocks by a single partition tree, or the luminance and chrominance components may be independently partitioned by separate partition trees.
[0327] In some example implementations, delta QP syntax elements (e.g., delta QP syntax elements representing chrominance delta QP values, i.e., delta_qp_c) are conveyed in the bitstream according to the following table: [Table 18]
[0328] In some example embodiments, delta QP syntax elements (e.g., delta QP syntax elements representing chrominance delta QP values, i.e., delta_qp_c) are conveyed in the bitstream according to the following table: [Table 19]
[0329] In some example implementations, delta QP syntax elements (e.g., delta QP syntax elements representing chrominance delta QP values, i.e., delta_qp_c) are conveyed in the bitstream according to the following table: [Table 20]
[0330] In some embodiments, a decoding device is provided having processing circuitry for performing any of the aforementioned methods.
[0331] In some embodiments there is provided a computer program product having a program code for performing a method according to any of the aforementioned methods when the computer program is run on a computing device.
[0332] In an example implementation, a decoding device for a boundary partition of a current block of a picture is provided, the decoding device having one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing programming for execution by the processors, the programming, when executed by the processors, configuring the decoding device to perform any of the above-mentioned methods.
[0333] In an embodiment, a computer readable storage medium having recorded thereon a program for causing a computer to carry out a method according to any of the foregoing methods is provided.
[0334] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communications protocol. As such, computer-readable media may generally correspond to (1) tangible computer-readable storage media that is non-transitory, or (2) a communication medium, such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0335] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio waves, and microwaves, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio waves, and microwaves are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but instead cover non-transitory, tangible storage media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where a disk typically reproduces data magnetically, while a disc reproduces data optically with a laser. Combinations of the above should also be included within the scope of computer-readable media.
[0336] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor," as used herein, may refer to any of the above structures, or any other structure suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a combined codec. Alternatively, the techniques may be implemented entirely in one or more circuits or logic elements.
[0337] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, the various units may be combined into codec hardware, as described above, or may be provided by a collection of interoperating hardware units including one or more processors, as described above, along with appropriate software and / or firmware.
[0338] Logical operators The following logical operators are defined as follows: x&&y Boolean logic "AND" of x and y x||y Boolean logic "OR" of x and y ! Boolean logic “NOT” x?y:zIf x is true or not equal to 0, evaluates to the value of y, otherwise evaluates to the value of z.
[0339] Relational operators The following relational operators are defined as follows: > greater than >= greater than or equal to < less than <= less than or equal to == equal to != not equal to
[0340] When a relational operator is applied to a syntax element or variable to which the value "NA" (not applicable) is assigned, the value "NA" is treated as a distinct value of that syntax element or variable. The value "NA" is considered not equal to any other value.
[0341] Bitwise operators The following bitwise operators are defined as follows: & bitwise "AND". When acting on integer arguments, it acts on the two's complement representation of integer values. When acting on a binary argument that contains fewer bits than the other arguments, the shorter argument is extended by adding additional significant bits equal to 0. | bitwise "OR". When acting on integer arguments, it acts on the two's complement representation of integer values. When acting on a binary argument that contains fewer bits than the other arguments, the shorter argument is extended by adding additional significant bits equal to 0. ^ bitwise "XOR". When acting on integer arguments, it acts on the two's complement representation of integer values. When acting on a binary argument that contains fewer bits than the other arguments, the shorter argument is extended by adding additional significant bits equal to 0. x >> y arithmetic right shift of the two's complement integer representation of x by y binary digits. This function is defined only for non - negative integer values of y. The bits shifted into the most significant bit (MSB) as a result of the right shift have the same value as the MSB of x before the shift operation. x << y arithmetic left shift of the two's complement integer representation of x by y binary digits. This function is defined only for non - negative integer values of y. The bits shifted into the least significant bit (LSB) as a result of the left shift have a value equal to 0.
[0342] assignment operator The following assignment operators are defined as follows: = assignment operator ++ increment, i.e., x++, is equivalent to x=x+1, and when used in an array index, evaluates to the value of the variable before the increment operation. -- Decrement, i.e., x--, is equivalent to x=x-1, and when used in an array index, evaluates to the value of the variable before the decrement operation. += Increment by the specified amount, i.e. x+=3 is equivalent to x=x+3, and x+=(-3) is equivalent to x=x+(-3). -= Decrement by the specified amount, i.e. x-=3 is equivalent to x=x-3, and x-=(-3) is equivalent to x=x-(-3).
[0343] Range Notation The following notation is used to specify a range of values: x=y..zx, y, and z are integers, and z is greater than y, so that x takes on an integer value greater than or equal to y and less than or equal to z.
Claims
1. 1. A video decoding method comprising: receiving a bitstream containing quantized coefficients of a current block in chrominance components, the current block having a color format of 4:2:2; performing entropy decoding on the bitstream to obtain the quantized coefficients; obtaining one or more existing quantization parameter (QP) values, the one or more existing QP values relating to the current block in the chrominance components; determining a QP value for the current block in the chrominance component based on the one or more existing QP values; performing inverse quantization on the quantized coefficients of the current block in the chrominance component by using the determined QP value to obtain inverse quantized coefficients; performing an inverse transform on the dequantized coefficients to obtain an inverse transformed block; obtaining a decoded picture based on the inverse transform block; A method having the following.
2. The one or more existing QP values are: the QP value of the co-located block in the luminance component, one or more existing QP values of one or more neighboring blocks of the co-located block in the luminance component, respectively; and one or more existing QP values of one or more neighboring blocks of the current block in the chrominance component, respectively; having at least one of: The method of claim 1.
3. determining a QP value for the current block in the chrominance component based on the one or more existing QP values, determining the QP value for the current block in the chrominance component based on the QP value of the co-located block in the luminance component. The method of claim 2.
4. determining the QP value for the current block in the chrominance component based on the QP value of the co-located block in the luminance component, retrieving a QP value of a luminance block that is co-located with a sample at a particular position in the current block in the chrominance component; determining the QP value for the current block in the chrominance component based on the retrieved QP value of the luminance block; having The method of claim 3.
5. the sample at the particular position is the top left sample in the bottom right quarter of the current block in the chrominance component; The method of claim 4.
6. The method comprises: determining the QP value for the current block in the chrominance component based on a weighted sum of existing QP values of the one or more neighboring blocks of the co-located block in the luminance component. The method of claim 2.
7. The method comprises: determining the QP value for the current block in the chrominance component based on a weighted sum of existing QP values of the one or more neighboring blocks of the current block in the chrominance component; The method of claim 2.
8. The method comprises: determining the QP value for the current block in the chrominance component based on both the QP value of the co-located block in the luminance component and a weighted sum of existing QP values of the one or more neighboring blocks of the current block in the chrominance component. The method of claim 2.
9. The method comprises: determining the QP value for the current block in the chrominance component based on both a weighted sum of existing QP values of the neighboring blocks of the current block in the chrominance component and a weighted sum of existing QP values of the neighboring blocks of the co-located block in the luminance component; The method of claim 2.
10. 1. A video encoding method comprising: obtaining a current block of a picture; quantizing the current block in a chrominance component of the picture by using the determined quantization parameter (QP) value to obtain quantized coefficients of the current block, where the color format of the current block is 4:2:2; obtaining one or more existing QP values and including the one or more existing QP values in a bitstream, the one or more existing QP values relating to the current block in the chrominance component; determining a QP parameter for the current block in the chrominance component based on the one or more existing QP values and the determined QP value; including the quantized coefficients in the bitstream by entropy encoding; including said QP parameters in said bitstream; A method having the following.
11. A decoding device, comprising: one or more processors; a non-transitory computer-readable storage medium coupled to the processor and storing programming for execution by the processor; wherein the programming, when executed by the processor, configures the decoding device to perform the method of any one of claims 1 to 9. Decoding device.
12. 1. An encoding device, comprising: one or more processors; a non-transitory computer-readable storage medium coupled to the processor and storing programming for execution by the processor; wherein the programming, when executed by the processor, configures the encoding device to perform the method of claim 10. Encoding device.
13. A computer program stored on a medium, comprising: A computer program arranged to cause a computer to carry out the method according to any one of claims 1 to 9.
Citation Information
Patent Citations
Method and Apparatus for Determining Value of Quantization Parameter
JP2016518762A
Signaling of quantization information in non-quadtree-only partitioned video coding
WO2018013706A1