Apparatus and method for inverse quantization

The method addresses the challenge of reducing coding complexity in video compression by determining the quantization parameter for chrominance blocks in the video coding standards, specifically using existing QP values from the bitstream, thereby enhancing the efficiency and quality of the compressed video.

JP7690528B2Active Publication Date: 2025-06-10HUAWEI TECH CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023140910
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-10-15
Filing Date
2023-08-31
Publication Date
2025-06-10
Estimated Expiration
2039-09-21

AI Technical Summary

Technical Problem

Existing video compression technologies face challenges in reducing coding complexity while maintaining picture quality, particularly in handling the inverse quantization of chrominance components in video coding standards like H.265/HEVC.

Method used

The proposed method involves an apparatus and method for inverse quantization that determines a quantization parameter (QP) for a current block in the chrominance component based on existing QP values from the bitstream, using specific boundary partitioning processing to reduce coding complexity.

Benefits of technology

This approach efficiently determines the QP value for chrominance blocks, reducing processing overload and complexity for the decoder, while maintaining the quality of the compressed video.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007690528000025
    Figure 0007690528000025
  • Figure 0007690528000026
    Figure 0007690528000026
  • Figure 0007690528000027
    Figure 0007690528000027
Patent Text Reader

Abstract

To provide a method for inverse quantization of a current block of a picture.SOLUTION: A method is performed by a decoder, and a picture comprises a luminance component and a chrominance component, the luminance component and the chrominance component being partitioned into multiple blocks. The method includes the steps of: obtaining one or more existing quantization parameter QP values from a received bitstream, the one or more existing QP values relating to a 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.SELECTED DRAWING: Figure 9
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the technical field of image and / or video decoding, and more particularly, to an apparatus and method for inverse quantization.

Background Art

[0002] Digital video communication and storage applications are implemented by a wide range of digital devices such as digital cameras, cellular radiotelephones, laptops, broadcast systems, video teleconferencing systems, and the like. One of the most important and challenging tasks in these applications is video compression. The task of video compression is complex and is constrained by two conflicting parameters, namely, compression efficiency and computational complexity. Video coding standard specifications such as ITU-T H.264 / AVC or ITU-T H.265 / HEVC provide an excellent trade-off between these parameters. Therefore, support for video coding standard specifications is an essential requirement for almost any video compression application.

[0003] Video compression techniques such as inter prediction, intra prediction, and loop filters have proven to be effective and are thus adopted in various video coding standard specifications 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 part of a picture having a size, for example, 16×16 or 64×64 pixels. In the latest video coding standard H.265 / HEVC, so-called coding tree units (CTUs) are used as the basic processing unit. CTUs are also called largest coding units (LCUs). In H.265 / HEVC, a CTU consists of a corresponding luma and chroma video signal part, for example, one luma CTB and two chroma CTBs representing Y, Cb, Cr components. CTUs are processed one by one in the scanning order from the upper left 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 can be further divided into either a smaller CU or a prediction unit (PU). A PU can be intra- or inter-predicted according to the type of processing applied for the pixels of the PU. In the case of inter-prediction, the PU represents an area of pixels that are processed by motion compensation using the motion vector specified for the PU. For intra-prediction, adjacent pixels of adjacent blocks are used as reference samples for predicting the current block. The 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., 4×4, 8×8, 16×16, and 32×32 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 that in-loop filters such as DBF, SAO, and ALF attempt to suppress, which can appear, for example, as blockiness between units, ringing artifacts associated with sharp edges, etc.The use of sophisticated prediction coding (e.g., motion compensation and intra prediction) and partitioning techniques (e.g., QT for CUs and PUs and RQT for TUs in the HEVC / H.265 standard, and multiple trees (MT) for the VVC reference software starting from versions BMS-1.0 and VTM-1.0) enables significant reduction of redundancy in PUs. The basic difference between the QT and MT partitioning mechanisms is that the latter enables square blocks by using a quadtree approach, along with rectangular blocks by using partitioning based on binary and ternary trees. As video generation and usage become increasingly common, video traffic is the maximum load on drivers to increase communication network and data storage requirements. Therefore, one of the goals of most video coding standards is to reduce coding complexity compared to its predecessors without sacrificing picture quality.

Summary of the Invention

[0005] Embodiments of the present application provide an apparatus and method for encoding and decoding according to independent claims.

[0006] The above and other objectives are achieved by the subject matter of the independent claims. Further embodiments are apparent from the dependent claims, the specification, and the drawings.

[0007] Specific embodiments are outlined in the appended independent claims, together with other embodiments in the dependent claims.

[0008] An apparatus and method for boundary partitioning are disclosed. The apparatus and method use specific boundary partitioning processing to reduce coding complexity. The boundary partitioning processing is also referred to as picture or image boundary handling.

[0009] According to a first aspect of the present invention, a method for inverse quantization of a current block of a picture is provided. The picture has a luminance component and a chrominance component, and the luminance component and the chrominance component are divided into a plurality of blocks (e.g., coding units, CUs) by separate partition trees. The method includes the decoder obtaining one or more existing quantization parameter (QP) values from a (e.g., received) bitstream, where the one or more existing QP values are related to the current block (i.e., the block being processed) in the chrominance component, and 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 part of the image), and the chrominance or chroma component represents the color information of the image. As a mere example, when a picture or image is represented in the [Y, Cb, and Cr] color space, the Y component is the luminance (or luma) component, and Cb and Cr are the chrominance or chroma components.

[0011] The luminance component and the chrominance component are divided into a plurality of blocks by separate partition trees. That is, the luminance component and the chrominance component are divided separately. There are different partition trees, such as a quadtree (QT), a binary tree (BT), a ternary tree (TT), and any combination of the above partition trees, such as a quadtree plus binary tree (QTBT), or a quadtree plus binary tree or ternary tree (QT - BT / TT), etc.

[0012] The expression "one or more existing QP values are related to the current block in the chrominance component" corresponds to the existing QP values related to the current block in the chrominance component. As a mere example, the existing QP values have the QP value of the block at the same position in the luminance component, the existing QP values of one or more adjacent blocks of the block at the same position in the luminance component, and the existing QP values of one or more adjacent blocks of the current block in the chrominance component.

[0013] The bitstream may be a received bitstream, where here it means the bitstream received by the decoder for processing. Reception here is related to any kind of reception, for example, from storage or from a network, etc.

[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. This provides an efficient way to determine 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, one or more existing QP values have at least one of the following: the QP value of the block at the same position in the luminance component, the existing QP values of one or more adjacent blocks of the block at the same position in the luminance component, and the existing QP values of one or more adjacent blocks of the current block in the chrominance component.

[0016] This defines the existing QP values and provides an efficient way to determine the QP value of a block in the chrominance component 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 the QP values of the blocks at the same position in the luminance component.

[0018] The term "block at the same position in the luminance component" refers to a block in the luminance component that is at the same position as the block in the chrominance component, where the term "at the same position" means the mapping relationship between the luminance and chrominance components of the 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 an easy and straightforward way to consider the QP value of the block at the same position in the luminance component as the QP value of that block in the chrominance component.

[0020] The step of determining the QP value for the current block in the chrominance component based on the QP values of the blocks at the same position in the luminance component comprises determining a luminance block at the same position as the sample at a specific position within the current chrominance block according to the foregoing example or the first aspect, taking out the QP value (e.g., QpY_basic) of the determined luminance block, and determining the 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 the block at the same position according to a specific sample is reliable, unambiguous, and enables a less complex implementation even when the luma block and chroma block have different partitions.

[0022] In the example, the sample at a specific position is the upper left sample within the lower right quarter of the current chrominance block.

[0023] Such a specific position roughly corresponds to the center of the block, thus providing an appropriate estimation of the QP of the block at the same position.

[0024] Alternatively, or additionally, the QP value for the current block in the chrominance component is given by the following formula Qp’Cb = QpCb + QpBdOffsetC + delta_qp_c, Qp’Cr = QpCr + QpBdOffsetC + delta_qp_c, or is determined according to a new formula derived from the said following formula, QpCb and QpCr are obtained from the qPiCb and qPiCr parameters obtained based on the QP value of the determined luminance block by applying the chroma QP mapping function. In particular, in some specific examples, qPiCb and qPiCr are indices in a chroma mapping function (table) calculated based on QpY_basic. QpY_basic corresponds to the QP value of the determined luminance block.

[0025] According to an exemplary implementation, the method is applied separately for the luma and chroma planes based on two picture parameter set PPS-based control flags. When the first control flag is truly equal, the method is applied for luma QP derivation, or when the first control flag is false, the method is not applied for luma QP derivation, and / or when the second control flag is truly equal, the method is applied for chroma QP derivation, or when the second control flag is 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 a first aspect of the present invention, the method further comprises determining a QP value for a current block in a chrominance component based on at least one of one or more existing QP values and a chrominance delta QP value signaled in a received bitstream or a chrominance QP offset value signaled in the received bitstream.

[0028] According to an example of a first aspect of the present invention, the method further comprises obtaining a partition depth value of a current block and, when the partition depth value is below a threshold value, 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 signaled in the received bitstream.

[0029] In this way, it is not necessary to apply this method to blocks having a depth value above the threshold value, which reduces the computational complexity.

[0030] According to an example of a first aspect of the present invention, the threshold value is determined based on a predefined number or a number signaled in a parameter set.

[0031] For example, this number may be predefined by a programmer or may be signaled in a parameter set, such as a picture parameter set (PPS) or a sequence parameter set (SPS).

[0032] According to an example of a first aspect of the present invention, the luminance component and the chrominance component are divided into a plurality of blocks (e.g., coding units, CUs) by separate partition trees.

[0033] It is recognized that a harmonic method for inverse quantization is provided, and this method is applicable not only to the single partition (ST) mode (i.e., the luma and chroma components are divided by a single partition), but also to the dual partition (DT) mode (i.e., the luma and chroma components are independently divided by separate partition trees).

[0034] According to an embodiment of the present invention, a decoding apparatus having a processing circuit for executing a method according to any one of the first aspect and the examples of the first aspect is provided.

[0035] According to a second aspect, a method for quantization of a current block of a picture is provided, 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 the steps of 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, the one or more existing QP values being related 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; and including the QP parameter in the bitstream.

[0036] According to an example of the second aspect of the present invention, the one or more existing QP values have at least one of the following: the QP value of the block at the same position in the luminance component; the existing QP values of one or more adjacent blocks of the block at the same position in the luminance component; and the existing QP values of one or more adjacent blocks of the current block in the chrominance component.

[0037] According to another example of the second aspect of the present invention, the determination of the QP parameter has a step of determining the QP parameter for the current block in the chrominance component based on the QP values of the blocks at the same position in the luminance component.

[0038] The step of determining the QP parameter for the current block in the chrominance component based on the QP values of the blocks at the same position in the luminance component includes, according to any of the foregoing examples and the second aspect, the step of extracting the QP value of the luminance block at the same position as the sample at a specific position within the current chrominance block, and the step of determining the QP value for the current block in the chrominance component based on the determined QP value of the luminance block. As an example of implementation, the step of determining the QP parameter for the current block in the chrominance component based on the QP values of the blocks at the same position in the luminance component includes the step of determining the luminance block at the same position as the sample at a specific position within the current chrominance block, the step of extracting the QP value (e.g., QpY_basic) of the determined luminance block, and the step of determining the QP parameter for the current block in the chrominance component based on the QP value (e.g., QpY_basic) of the determined luminance block.

[0039] In an example, the sample at the specific position is the upper left sample within the lower right quarter of the current chrominance block.

[0040] Alternatively, or in addition, the QP value for the current block in the chrominance component is given by the following formula Qp’Cb = QpCb + QpBdOffsetC + delta_qp_c, Qp’Cr = QpCr + QpBdOffsetC + delta_qp_c, or is 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 QP value of the luminance block determined by applying the chroma QP mapping function.

[0041] According to an exemplary implementation, the method is applied separately for the luma and chroma planes based on two picture parameter set PPS-based control flags. When the first control flag is truly equal, the method is applied for luma QP derivation, or when the first control flag is equal to false, the method is not applied for luma QP derivation, and / or when the second control flag is truly equal, the method is applied for chroma QP derivation, or when the second control flag is equal to false, the method is not applied for chroma QP derivation. The method further includes 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 includes the step of determining the QP parameter for the current block in the chroma component based on at least one of one or more existing QP values and the chroma delta QP value included in the following bitstream or the chroma QP offset value included in the bitstream. The method may further include inserting the delta QP or QP offset into the bitstream.

[0043] According to an example of the second aspect of the present invention, the method includes the step of determining (and optionally including in the bitstream) the partition depth value of the current block, and when the partition depth value is below a threshold, determining the QP value for the current block in the chroma component based on one or more existing QP values and the chroma 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 communicated in the 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 component and the chrominance component are divided into a plurality of blocks (e.g., coding units, CUs) by separate partition trees.

[0047] According to a third aspect of the present invention, when a computer program is executed on a computing device, there is provided a computer program product having program code for executing the method according to any one of the first aspect and the examples of the first aspect. 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 device for boundary partitioning of a current block of a picture. The decoding device includes 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 configuring the decoding device to execute the method according to any one of the first aspect and the examples of the first aspect when executed by the processors.

[0049] According to a fifth aspect, there is provided an encoding device for boundary partitioning of a current block of a picture, the encoding 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 configuring the encoding device to execute the method according to any one of the second aspect and the examples of the second aspect when executed by the processors.

[0050] According to a sixth aspect, 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 are divided into a plurality of blocks. In the apparatus, there is a bitstream parser (1110) that obtains one or more existing quantization parameter QP values from a bitstream, and the one or more existing QP values are 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. An apparatus is provided that has these components.

[0051] According to a seventh aspect, an apparatus for 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 are divided into a plurality of blocks. In the apparatus, there is a quantizer (1210) that performs quantization on the current block in the chrominance component by using the determined QP value; a fetch unit (1220) that obtains one or more existing quantization parameter QP values and includes the one or more existing QPs in a bitstream, and the one or more existing QP values are related to the current block in the chrominance component; a QP determination unit (1230) that determines 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; and a bitstream generation unit (1240) that includes the QP parameter in the bitstream. An apparatus is provided that has these components.

[0052] According to an eighth aspect, an integrated circuit embodying any of the above apparatuses is provided.

[0053] Embodiments of the second, third, and fourth aspects correspond to each embodiment of the first aspect. Accordingly, method embodiments have the features of the corresponding embodiments of the decoding apparatus, and vice versa. The decoding apparatus may be implemented as a chipset that decodes 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 apparatus according to the fourth and sixth aspects.

[0055] Hereinafter, exemplary embodiments will be described in more detail with reference to the accompanying figures and drawings.

Brief Description of the Drawings

[0056]

Fig. 1A

Fig. 1B

Fig. 2

Fig. 3

Fig. 4

Fig. 5

Fig. 6A

Fig. 6B

Fig. 6C

Fig. 6D

Fig. 6E

Fig. 7A

Fig. 7B

Fig. 7C

Fig. 8

Fig. 9

Fig. 10

Fig. 11

Fig. 12

Fig. 13

Fig. 14

DETAILED DESCRIPTION OF THE INVENTION

[0057] Hereinafter, the same reference numerals refer to the same or at least functionally equivalent features, unless explicitly stated otherwise.

[0058] In the following description, reference is made to the accompanying drawings that form a part hereof and which illustrate specific aspects of embodiments of the invention or specific aspects in which embodiments of the invention may be used. Embodiments of the invention may be used in other aspects and include structural or logical changes not illustrated. The following detailed description, therefore, should not be taken in a limiting sense, and the scope of the invention is defined by the appended claims.

[0059] It is understood, for example, that the disclosure related to a described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or more specific method steps are described, the corresponding device may include one or more units, such as functional units, to perform the one or more described method steps even if such one or more units are not explicitly described or illustrated (e.g., one unit performs one or more steps, or multiple units each perform one or more of multiple steps). On the other hand, for example, if a specific device is described based on one or more units, such as functional units, the corresponding method may include one or more steps to perform the functionality of the one or more units even if such one or more steps are not explicitly described or illustrated (e.g., one step performs the functionality of one or more units, or multiple steps each perform the functionality of one or more of multiple units). Further, it is understood that the various example embodiments and / or aspects described herein may be combined with each other, unless otherwise specifically stated.

[0060] Video coding typically refers to the processing of a sequence of pictures that form a video or video sequence. Instead of the term "picture", the terms "frame" or "image" may be used as synonyms in the field of video coding. The video coding used in the present application (or the present disclosure) indicates either video encoding or video decoding. Video encoding is performed on the source side and typically involves processing the original video picture (e.g., by compression) to reduce the amount of data required to represent the video picture (for more efficient storage and / or transmission). Video decoding is performed on the destination side and typically involves performing the reverse process compared to the encoder to reconstruct the video picture. Embodiments that refer to the "coding" of a video picture (or, as will be described later, pictures in general) should be understood to relate to either the "encoding" or the "decoding" of a video sequence. The combination of the encoding part and the decoding part is also called a CODEC (Coding and Decoding).

[0061] In the case of reversible video coding, the original video picture is reconstructable. That is, the reconstructed video picture has the same quality as the original video picture (assuming no transmission loss or other data loss during storage or transmission). In the case of irreversible video coding, for example, further compression by quantization is performed to reduce the amount of data representing the video picture, and the video picture cannot be completely reconstructed by the decoder. That is, the quality of the reconstructed video picture is lower or worse compared to the quality of the original video picture.

[0062] Several video coding standards after H.261 belong to the group of "irreversible hybrid video coders" (i.e., combining spatial and temporal prediction in the sample domain and 2D transform coding for applying quantization in the transform domain). Each picture of a video sequence is typically divided into a set of non-overlapping blocks, and coding is typically performed at the block level. That is, in the encoder, video is typically processed at the block (video block) level, for example, using spatial (intra-picture) prediction and temporal (inter-picture) prediction to generate a prediction block, subtracting the prediction block from the current block (the block being currently processed / to be processed) to obtain a residual block, transforming the residual block, and quantizing the residual block in the transform domain to reduce the amount of data to be transmitted (compression), i.e., encoded. On the other hand, in the decoder, the reverse process compared to the encoder is partially applied to the encoded or compressed block to reconstruct the current block for display. Further, the encoder reproduces the processing loop of the decoder, such that both will generate the same prediction (e.g., intra and inter prediction) and / or reconstruction for processing, i.e., coding subsequent blocks.

[0063] As used herein, the term "block" may be a portion of a picture or frame. For convenience of description, embodiments of the present invention are described herein with reference to the reference software of High-Efficiency Video Coding (HEVC) or Versatile video coding (VVC) developed by the Joint Collaboration Team on Video Coding (JCT-VC) of the ITU-T's Video Coding Experts Group (VCEG) and the ISO / IEC's Motion Picture Experts Group (MPEG). 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, a PU, and a TU. In HEVC, a CTU is divided into CUs by using a quadtree structure represented as a coding tree. The decision on 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 one PU, the same prediction process is applied, and the relevant information is sent to the decoder on a PU basis. After obtaining a residual block by applying a prediction process based on the PU partition type, the CU may be divided into transform units (TUs) according to another quadtree structure similar to the coding tree for the CU. In the latest development of video compression technology, quadtree and binary tree (QTBT) partitioning frames are used to divide coding blocks. In the QTBT block structure, a CU can have either a square or rectangular shape. For example, a coding tree unit (CTU) is first divided by a quadtree structure. The quadtree leaf node is further divided by a binary tree structure. The binary tree leaf node is called a coding unit (CU), and its segmentation is used for prediction and conversion processing without further partitioning. This means that the CU, PU, and TU have the same block size in the QTBT coding block structure.At the same time, it has been proposed that multiple partitions, e.g., ternary tree partitions, be used together with the QTBT block structure.

[0064] Hereinafter, embodiments of the encoder 20, decoder 30, and coding system 10 will be described based on FIGS. 1 to 3.

[0065] FIG. 1A is a conceptual or schematic block diagram representing an exemplary coding system 10, e.g., a video coding system 10 that can utilize the technology of the present application (this disclosure). The encoder 20 (e.g., video encoder 20) and decoder 30 (e.g., video decoder 30) of the video coding system 10 represent examples of devices that can be configured to execute techniques according to various examples described in the present application. As shown in FIG. 1A, the coding system 10 has a source device 12 configured to supply encoded data 13, e.g., an encoded picture 13, to a destination device 14 that decodes the encoded data 13.

[0066] The source device 12 has an encoder 20 and additionally, i.e., optionally, may have a picture source 16, a preprocessing unit 18, e.g., a picture preprocessing unit 18, and a communication interface or communication unit 22.

[0067] The picture source 16 may have, or be, for example, any kind of picture capture device for capturing pictures of the real world, and / or any kind of picture or comment generation device (for the coding of screen content, some text on the screen is also considered as part of the picture or image to be coded), for example, a computer graphics processor for generating computer-animated pictures, or any kind of device for acquiring and / or supplying pictures of the real world, computer-animated pictures (for example, screen content, virtual reality (VR) pictures) and / or any combination thereof (for example, augmented reality (AR) pictures).

[0068] (Digital) pictures are or can be considered as two-dimensional arrays or matrices of samples having intensity values. Samples within the array can also be called pixels (abbreviation for picture elements) 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, usually three color components are used. That is, a picture can be represented by or can include three sample arrays. In the RGB format or color space, a picture has corresponding red, green, and blue sample arrays. However, in video coding, each pixel usually has a luminance component represented by Y (sometimes L is also used instead) and two chrominance components represented by Cb and Cr, and is represented in YCbCr. The luminance (or simply luma) component Y represents luminance or gray-level intensity (e.g., similar to a grayscale picture), while the two chrominance (or simply chroma) components Cb and Cr represent chrominance or color information components. Thus, a picture in the 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 the RGB format can be converted or transformed into the YCbCr format, and vice versa, and the process is 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, which is nominally considered as a luma array.

[0070] In 4:2:0 sampling, as shown in FIG. 7A, each of the two chroma arrays has half the height and half the width of the luma array.

[0071] In 4:2:2 sampling, as shown in FIG. 7B, each of the two chroma arrays has the same height as the luma array and half its width.

[0072] For 4:4:4 sampling, as shown in Figure 7C, the following applies depending on the value of separate_colour_plane_flag.

[0073] - When 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 (when separate_colour_plane_flag is equal to 1), the three colour planes are processed separately as monochrome sampled pictures.

[0075] Picture source 16 (e.g., video source 16) may be, for example, a camera that captures pictures, a memory that has or stores previously captured or generated pictures, e.g., a picture memory, and / or any kind of interface (internal or external) that acquires or receives pictures. The camera may be, for example, a local or built-in camera incorporated in the source device, and the memory may be, for example, a local or built-in memory incorporated in the originating device. The interface may be, for example, an external video source, e.g., an external picture capture device such as a camera, an external memory, or an external picture generation device, e.g., an external computer graphics processor, a computer or a server, for receiving pictures from an external interface. The interface can be any kind of interface that conforms to any proprietary or standardized interface protocol, e.g., a wired or wireless interface, an optical interface. The interface for acquiring picture data 17 may be the same interface as or a part of communication interface 22.

[0076] Distinguished from the preprocessing unit 18 and the processes executed by the preprocessing unit 18, the picture or picture data 17 (e.g., video data 17) may also be referred to as raw picture or raw picture data 17.

[0077] The preprocessing unit 18 is configured to receive (raw) picture data 17 and perform preprocessing on the picture data 17 to obtain preprocessed picture 19 or preprocessed picture data 19. The preprocessing executed by the preprocessing unit 18 may have, for example, trimming, color format conversion (e.g., from RGB to YCbCr), color correction, or noise removal. It can be understood that the preprocessing unit 18 may be any component.

[0078] The coder 20 (e.g., video coder 20) is configured to receive the preprocessed picture data 19 and supply the encoded picture data 21 (further details will be described below, for example, based on FIG. 2 or FIG. 4).

[0079] The communication interface 22 of the source device 12 is configured to receive the encoded picture data 21 and send it to other devices, such as 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 before sending the encoded data 13 to other devices, such as the destination device 14 or some other device for decoding or storage.

[0080] The destination device 14 may have a decoder 30 (e.g., video decoder 30), and further, that is, optionally, may have a communication interface or communication unit 28, a postprocessing 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, such as a storage device, for example, an encoded 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, such as a direct wired or wireless connection, or via any type of network, such as a wired or wireless network arc or any combination thereof, or via any type of private and public network, or any combination of any type thereof.

[0083] The communication interface 22 may be configured to package the encoded picture data 21, for example, into an appropriate format, such as a packet, for transmission on a communication link or a communication network.

[0084] The communication interface 28, which forms the counterpart of the communication interface 22, may be configured to unpack the encoded data 13, for example, to obtain the encoded picture data 21.

[0085] Both the communication interface 22 and the communication interface 28 may be configured as a unidirectional communication interface, as indicated by the arrow for the encoded picture data 13 in Figure 1A, or a bidirectional communication interface, which is directed from the source device 12 to the destination device 14, and may be configured to transmit and receive messages, for example, to set up a connection and to acknowledge and exchange any other information regarding the communication link and / or data transmission, for example, the encoded picture data transmission.

[0086] The decoder 30 is configured to receive the encoded picture data 21 and supply the decoded picture data 31 or the decoded picture 31 (further details will be described below, for example, based on FIG. 3 or FIG. 5).

[0087] The post-processor 32 of the destination device 14 is configured to post-process the decoded picture data 31 (also referred to as the reconstructed picture data), for example, the decoded picture 31, to obtain the post-processed picture data 33, for example, the post-processed picture 33. The post-processing executed by the post-processing unit 32 may include, for example, color format conversion (e.g., from YCbCr to RGB), color correction, trimming, or resampling, or any other processing for preparing the decoded picture data 31, for example, for display by the display device 34.

[0088] The display device 34 of the destination device 14 is configured to receive the post-processed picture data 33 for displaying a picture, for example, to a user or viewer. The display device 34 may be or include any type of display for displaying the reconstructed picture, for example, a built-in or external display or monitor. The display may have, 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] FIG. 1A depicts the source device 12 and the destination device 14 as separate devices, but embodiments of the device may also have both or either functionality, the source device 12 or corresponding functionality and the destination device 14 or corresponding functionality. In such embodiments, the source device 12 or corresponding functionality and the 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 apparent to those skilled in the art based on the description, the functionality of the different units, or the presence and (exact) partitioning 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 technology is implemented partially in software, the device may store instructions for the software in a suitable non-transitory computer-readable storage medium and execute the instructions in hardware using one or more processors to perform the techniques of the present disclosure. Any of the foregoing (including hardware, software, combinations 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, and either or both of them may be incorporated as part of a combined encoder / decoder (CODEC) in each device.

[0092] The source device 12 may be referred to as a video encoding device or a video encoder. The destination device 14 may be referred to as a video decoding device or a video decoder. The source device 12 and the destination device 14 may be examples of video coding devices or video coding apparatuses.

[0093] The source device 12 and the destination device 14 may have any of a wide variety of devices, including any type of handheld or stationary device, such as a notebook or laptop computer, a cellular phone, a smartphone, a tablet or tablet computer, a camera, a desktop computer, a set-top box, a television receiver, a display device, a digital media player, a video game console, a video streaming device (e.g., a content service server or a content delivery server), a broadcast receiving device, a broadcast transmitting device, etc., and may or may not use an operating system, or may use any type of operating system.

[0094] In some cases, the source device 12 and the destination device 14 may be equipped with functions for wireless communication. Thus, the source device 12 and the destination device 14 may be wireless communication devices.

[0095] In some cases, the video coding system 10 shown in FIG. 1A is merely an example, and the technology of the present application may be applied to video coding settings (e.g., video encoding or video decoding) that do not necessarily involve any data communication between the encoding and decoding devices. In other examples, the data may be retrieved from local memory, streamed over a network, etc. The video encoding device may encode the data and store it in memory, and / or the video decoding device may retrieve the data from memory and decode it. In some examples, the encoding and decoding are performed by devices that do not communicate with each other and simply encode the data and store it in memory and / or retrieve the data from memory and decode it.

[0096] For each of the above examples described with reference to the video coder 20, it should be understood that the video decoder 30 may be configured to perform the reverse process. With regard to notifying syntax elements, the video decoder 30 may be configured to receive and parse such syntax elements and, accordingly, decode the relevant video data. In some examples, the video coder 20 may entropy code one or more syntax elements into the encoded video bitstream. In such examples, the video decoder 30 may parse such syntax elements and, accordingly, decode the relevant video data.

[0097] FIG. 1B is a diagram illustrating an example of another exemplary video coding system 40 that includes the coder 20 of FIG. 2 and / or the decoder 30 of FIG. 3 according to an exemplary embodiment. The system 40 can implement techniques according to the various examples described in this application. In the illustrated implementation, the video coding system 40 may include an imaging device 41, a video coder 20, a video decoder 30 (and / or a video coder implemented by the logic circuit 47 of the 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, the imaging device 41, the antenna 42, the processing unit 46, the logic circuit 47, the video coder 20, the video decoder 30, the processor 43, the memory store 44, and / or the display device 45 may be capable of communicating with each other. As described, both the video coder 20 and the video decoder 30 are shown, but the video coding system 40 may include only the video coder 20 or only the 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 also include display device 45. Display device 45 may be configured to present video data. As shown, in some examples, logic circuit 47 may be implemented by processing unit 46. Processing unit 46 may include, for example, application specific integrated circuit (ASIC) logic, a graphics processor, a general purpose processor, and the like. Video coding system 40 may also include any processor 43, which may similarly include application specific integrated circuit (ASIC) logic, a graphics processor, a general purpose processor, and the like. In some examples, logic circuit 47 may be implemented by hardware, video coding dedicated hardware, and the like, and processor 43 may implement general purpose software, an operating system, and the like. 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 circuit 47 may access memory store 44 (e.g., for implementation of an image buffer). In other examples, logic circuit 47 and / or processing unit 46 may include a memory store (e.g., a cache, etc.) for implementation of, for example, an image buffer.

[0100] In some examples, the video coder 20 implemented by a logic circuit may include an image buffer (e.g., by either the processing unit 46 or the memory store 44) and a graphics processing unit (e.g., by the processing unit 46). The graphics processing unit may be communicatively coupled to the image buffer. The graphics processing unit may include the video coder 20 implemented by the logic circuit 47 to embody various modules described in connection with FIG. 2 and / or any other coder system or subsystem described herein. The logic circuit may be configured to perform various operations described herein.

[0101] The video decoder 30 may be implemented in a similar manner to be implemented by the logic circuit 47 to embody various modules described in connection with the decoder 30 of FIG. 3 and / or any other decoder system or subsystem described herein. In some examples, the video decoder 30 may be implemented by a logic circuit and may include an image buffer (e.g., by either the processing unit 46 or the memory store 44) and a graphics processing unit (e.g., by the processing unit 46). The graphics processing unit may be communicatively coupled to the image buffer. The graphics processing unit may include the video decoder 30 implemented by the logic circuit 47 to embody various modules described in connection with FIG. 3 and / or any other decoder system or subsystem described herein.

[0102] In some examples, the antenna 42 of the 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 coding partitions (e.g., transform coefficients or quantized transform coefficients, any indicators (as described), and / or data defining coding partitions), data, indicators, index values, mode selection data, etc. related to encoding a video frame as described herein. The video coding system 40 may also include a video decoder 30 coupled to the antenna 42 and configured to decode the encoded bitstream. The display device 45 is configured to present the video frame.

[0103] Encoder and Encoding Method FIG. 2 shows a schematic / conceptual block diagram of an example video encoder 20 configured to implement the technology 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 according to a hybrid video codec.

[0104] For example, the residual calculation unit 204, the conversion processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy encoding unit 270 form the forward signal path of the encoder 20. On the other hand, for example, the inverse quantization unit 210, the inverse conversion 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 reverse signal path of the encoder. The reverse signal path of the encoder corresponds to the signal path of the decoder (see the decoder 30 in FIG. 3).

[0105] The encoder 20 is configured to receive, for example, by the input unit 202, the picture 201 or the block 203 of the picture 201, for example, a sequence of pictures forming a video or a video sequence. The picture block 203 may also be referred to as the current picture block or the picture block to be coded, and the picture 201 may also be referred to as the current picture or the picture to be coded (especially in video coding, to distinguish the current picture from other pictures, for example, pictures coded and / or decoded before in the same video sequence, i.e., the video sequence including the current picture).

[0106] Partitioning An embodiment of the encoder 20 may have a partitioning unit (not shown in FIG. 2) configured to divide the picture 201 into a plurality of blocks, for example, blocks such as the block 203, usually into a plurality of non-overlapping blocks. The partitioning unit may be configured to use the same block size and the corresponding grid defining the block size for all pictures of the video sequence, or to change the block size between pictures or subsets or groups of pictures and divide each picture into corresponding blocks.

[0107] In one example, the prediction processing unit 260 of the video encoder 20 may be configured to perform any combination of the above partitioning techniques.

[0108] Similar to picture 201, block 203 is also a two-dimensional array or matrix of samples having intensity values (sample values), or can be regarded as such, although it has dimensions smaller than those of picture 201. That is, block 203 may have, for example, one sample array (e.g., the luminance array in the case of a monochrome picture 201) or three sample arrays (e.g., the luminance and two chroma arrays in the case of a 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 defines the size of block 203.

[0109] The video coder 20 shown in FIG. 2 is configured to encode picture 201 block by block. For example, encoding and prediction are performed block by block for block 203.

[0110] The partitioning unit may be configured to successively divide pictures from a video sequence into coding tree units (CTUs). The partitioning unit may divide (or split) a coding tree unit (CTU) into smaller partitions, e.g., smaller blocks of square or rectangular size. For a picture having three sample arrays, a CTU consists of an N×N block of luma samples together with two corresponding blocks of chroma samples. The maximum allowable size of the luma block in a CTU is defined as 128×128 in the developing versatile video coding (VVC), but it may be defined as a value other than 128×128 in the future, e.g., 256×256. The CTUs of a picture may be clustered / grouped as slices / tile groups, tiles, or bricks. A tile covers a rectangular region of a picture and a tile may be divided into one or more bricks. A brick consists of a number of CTU rows within a 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, namely, the raster scan slice / tile group mode and the rectangular slice mode. In the raster scan tile group mode, a slice / tile group includes the succession of tiles in the tile raster scan of a picture. In the rectangular slice mode, a slice includes 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 referred to as tree partitioning or hierarchical tree partitioning. For example, a root block at the root tree level 0 (hierarchical level 0, depth 0) may be recursively divided into two or more blocks at the next lower tree level, for example, nodes at tree level 1 (hierarchical level 1, depth 1). These blocks may then be further divided into two or more blocks at the next lower level, for example, tree level 2 (hierarchical level 2, depth 2), until a termination criterion is met, such as the maximum tree depth or minimum block size being reached, at which point the partitioning terminates. Blocks that are not further divided are also referred to as leaf blocks or leaf nodes of the tree. A tree that uses partitioning into two partitions is called a binary tree (BT), a tree that uses partitioning into three partitions is called a ternary tree (TT), and a tree that uses partitioning into four partitions is called a quadtree (QT).

[0111] For example, a coding tree unit (CTU) may be or have a CTB of luma samples, two corresponding CTBs of chroma samples of a picture having three sample arrays, or a CTB of samples of a picture coded using three separate color planes and syntax structures for coding a monochrome picture or samples. Correspondingly, a coding tree block (CTB) may be an N×N block of samples for some value of N such that the partitioning of components to the CTB is a partitioning. A coding unit (CU) may be or have a coding block of luma samples, two corresponding coding blocks of chroma samples of a picture having three sample arrays, or a coding block of samples of a picture coded using three separate color planes and syntax structures for coding a monochrome picture or samples. Correspondingly, a coding block (CB) may be an M×N block of samples for some values of M and N such that the partitioning of CTBs to the coding block is a partitioning.

[0112] In an embodiment, for example, according to HEVC, a coding tree unit (CTU) may be divided into CUs by using a quadtree structure represented as a coding tree. A determination 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 the PU partition type. Within one PU, the same prediction process is applied and the related information is sent to the decoder on a PU basis. After obtaining a residual block by applying a prediction process based on the PU partition type, the leaf CU may be divided into transform units (TUs) according to another quadtree structure similar to the coding tree for the CU.

[0113] In an embodiment, for example, a composite quadtree nested multi-type tree using a binary and ternary segmentation structure is used to divide, for example, a coding tree unit, according to 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 divided by a quadtree. Then, a quadtree leaf node can be further divided by a multi-type tree structure. There are four split types in the multi-type tree structure, namely, vertical binary split (SPLIT_BT_VER), horizontal binary split (SPLIT_BT_HOR), vertical ternary split (SPLIT_TT_VER), and horizontal ternary split (SPLIT_TT_HOR). A multi-type tree leaf node is called a coding unit (CU), and this segmentation is used for prediction and transformation processing without further partitioning as long as the CU is not too large for the maximum transform length. This means that in most cases, the CU, PU, and TU have the same block size in a quadtree nested multi-type tree coding block structure. An exception occurs when the maximum supported transform length is smaller than the width or height of the color component of the CU. VVC is developing a unique signaling mechanism for partition split information in a quadtree nested multi-type tree coding tree structure. In that signaling mechanism, a coding tree unit (CTU) is treated as the root of a quadtree and is first divided by a quadtree structure. Each quadtree leaf node (if large enough to allow it) is then further divided by a multi-type tree structure. In the multi-type tree structure, a first flag (mtt_split_cu_flag) is signaled to indicate whether the node is further divided.When 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 binary or ternary. 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 according to pre-defined rules or tables. It should be noted that for a specific design, e.g., the 64×64 luma block and 32×32 chroma pipelining design in a VVC hardware decoder, TT split is prohibited when either the width or the height of the luma coding block is greater than 64. TT split is also prohibited when either the width or the height of the chroma coding block is greater than 32. The pipelining design will split the picture into virtual pipeline data units (VPDUs) defined as non-overlapping units within the picture. In a hardware decoder, consecutive VPDUs are processed simultaneously by multiple pipeline stages. Since the VPDU size is approximately proportional to the buffer size in most pipeline stages, it is important to keep the VPDU size small. In most hardware decoders, the VPDU size can be set to the maximum transform block (TB) size. However, in VVC, the ternary tree (TT) and binary tree (BT) partitions may result in an increase in the VPDU size.

[0114] Furthermore, it should be noted that when a part of the tree node block crosses the bottom or right picture boundary, the tree node block is forced to be split until all samples of all coded CUs are located within the picture boundary.

[0115] As an example, an Intra Sub-Partitions (ISP) tool may divide a luminanced intra-predicted block into two or four sub-partitions vertically or horizontally according to the block size.

[0116] Residual calculation The residual calculation unit 204 is configured to calculate a residual block 205 based on a picture block 203 and a prediction block 265 (more details regarding the prediction block 265 will be given later), for example, by subtracting the sample values of the prediction block 265 from the sample values of the picture block 203 for each sample (per pixel) so as to obtain the residual block 205 in the sample region.

[0117] Transformation The transformation processing unit 206 is configured to apply a transformation, for example, a Discrete Cosine Transform (DCT) or a Discrete Sine Transform (DST), to the sample values of the residual block 205 so as to obtain transformation coefficients 207 in the transformation region. The transformation coefficients 207, also referred to as transformed residual coefficients, may represent the residual block 205 in the transformation region.

[0118] The transformation processing unit 206 may be configured to apply an integer approximation of DCT / DST such as the transformation defined for HEVC / H.265. Compared with the orthogonal DCT transform, such an integer approximation is usually scaled by certain coefficients. To maintain the norm of the residual block processed by the forward and inverse transforms, additional scaling coefficients are applied as part of the transformation process. The scaling coefficients are usually selected based on specific constraints such as the scaling coefficient which is a power of two for shift operations, the bit depth of the transformation coefficients, the trade-off between accuracy and implementation cost, etc. Specific scaling coefficients are specified, for example, for the inverse transformation (and the corresponding inverse transformation in the encoder 20, for example, by the inverse transformation processing unit 212) in the decoder 30, and the corresponding scaling coefficients for the forward transformation in the encoder 20, for example, by the transformation processing unit 206, may be specified accordingly.

[0119] Quantization The quantization unit 208 is configured to quantize the transform coefficient 207 to obtain a quantized transform coefficient 209, for example, by applying scalar quantization or vector quantization. The quantized transform coefficient 209 may also be referred to as the quantized residual coefficient 209. The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, if n is greater than m, an n-bit transform coefficient may be truncated to an m-bit transform coefficient during quantization. The degree of quantization may be changed by adjusting a quantization parameter (QP). For example, for scalar quantization, different scalings 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 be, for example, an index to a predefined set of applicable quantization step sizes. For example, a small quantization parameter may correspond to fine quantization (small quantization step size), a large quantization parameter may correspond to coarse quantization (large quantization step size), and vice versa. Quantization may include division by a quantization step size, and for example, inverse quantization in the corresponding or reverse direction by the inverse quantization unit 210 may include multiplication by the quantization step size. Embodiments that follow some standard specifications, such as HEVC, may be configured to use a 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 that includes division. An additional scaling factor may be introduced for quantization and inverse quantization to recover the norm of the residual block that may be changed for the 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 inverse transform and inverse quantization may be combined. Alternatively, a customized quantization table may be used and transmitted, for example, in a bitstream, from the encoder to the decoder.Quantization is an irreversible operation, and the loss increases as the quantization step size increases.

[0120] The inverse quantization unit 210 is configured to apply an inverse quantization to the quantized coefficients to obtain the inverse quantized coefficients 211, for example, by applying the inverse of the quantization scheme applied by the quantization unit 208 based on or using the same quantization step size as the quantization unit 208. The inverse quantized coefficients 211, which may also be referred to as the inverse quantized residual coefficients 211, usually are not the same as the transform coefficients due to the loss by quantization, but correspond to the transform coefficients 207.

[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 the inverse transform inverse quantized block 213 or the inverse transform residual block 213.

[0122] The reconstruction unit 214 (e.g., an 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 a 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 simply "buffer" 216), for example, a line buffer 216, is configured to buffer or store the reconstructed block 215 and each sample value, for example, for intra prediction. In a further embodiment, the coder may be configured to use the unfiltered reconstructed block and / or each sample value stored in the buffer unit 216 for any kind of estimation and / or prediction, for example, intra prediction.

[0124] In an embodiment of the symbolizer 20, for example, the buffer unit 216 may be configured to store the reconstructed block 215 not only for the intra prediction unit 254 but also for the loop filter unit 220 (not shown in FIG. 2), and / or, for example, the buffer unit 216 and the decoded picture buffer unit 230 may be configured to form one buffer. A further embodiment may be configured to use filtered blocks 221 and / or blocks or samples (both not shown in FIG. 2) from the decoded picture buffer 230 as an input or basis for the intra prediction unit 254.

[0125] The loop filter unit 220 (or simply “loop filter” 220) is configured to apply a filter to the reconstructed block 215, for example, to smooth pixel transitions or otherwise improve video quality in order to obtain the filtered block 221. The 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, for example, a bilateral filter or an adaptive loop filter (ALF) or a sharpening or smoothing filter or a collaborative filter. The loop filter unit 220 is shown as an in-loop filter in FIG. 2, but in other configurations, the loop filter unit 220 may be implemented as a post-loop filter. The filtered block 221 may sometimes also be referred to as the filtered reconstructed block 221. The decoded picture buffer 230 may store the reconstructed coding block after the loop filter unit 220 has performed a filtering operation on the reconstructed coding block.

[0126] An embodiment of the symbolizer 20 (or loop filter unit 220) may be configured to output loop filter parameters (e.g., sample adaptive offset information) that are entropy encoded, for example, directly or via an entropy encoding unit 270 or some other entropy coding unit, such that, for example, the 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 when the video data is encoded by the video encoder 20. The DPB 230 may be formed by any of various memory devices such as a dynamic random access memory (DRAM) including a synchronous DRAM (SDRAM), a magnetoresistive RAM (MRAM), a resistive RAM (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 the filtered block 221. The decoded picture buffer 230 may be further configured to store other previously filtered blocks of the same current picture or different pictures, e.g., previously reconstructed pictures, e.g., previously reconstructed and filtered blocks 221, and may supply, for example, for inter prediction, a fully previously reconstructed, i.e., decoded, picture (along with corresponding reference blocks and samples) and / or a partially reconstructed current picture (along with corresponding reference blocks and samples). In some examples, when the reconstructed block 215 is reconstructed but without in-loop filtering, the decoded picture buffer (DPB) 230 is configured to store the reconstructed block 215.

[0128] The prediction processing unit 260, also referred to as the block prediction processing unit 260, is configured to receive or acquire the block 203 (the current block 203 of the current picture 201) and the reconstructed picture data, for example, the reference samples of the same (current) picture from the buffer 216 and / or the reference picture data 231 from one or more previously decoded pictures from the decoded picture buffer 230, and to process such data for prediction, that is, to supply a prediction block 265 which can 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., an 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 the mode selection unit 262 may be configured to select a prediction mode that results in the best match, that is, in other words, the minimum residual (the minimum residual means better compression for transmission or storage), or the minimum signaling overhead (the minimum signaling overhead means better compression for transmission or storage), or to consider or balance both, from, for example, those supported by the prediction processing unit 260. The mode selection unit 262 may be configured to determine the prediction mode based on rate-distortion optimization (RDO), that is, to select a prediction mode that results in the lowest rate-distortion optimization or that selects a prediction mode related to rate-distortion that at least satisfies the prediction mode selection criteria.

[0131] Hereinafter, the prediction processing (e.g., by the prediction processing unit 260 and mode selection (e.g., by the mode selection unit 262)) performed by the exemplary encoder 20 will be described in more detail.

[0132] As described above, the coder 20 is configured to determine or select the best or optimal prediction mode from a set of (predetermined) prediction modes. The set of prediction modes may have, for example, an intra prediction mode and / or an inter prediction mode.

[0133] The set of intra prediction modes may have 35 different intra prediction modes, for example, non - directional modes such as DC (or average) mode and planar mode, or directional modes as defined, for example, in H.265, or may have 67 different intra prediction modes, for example, non - directional modes such as DC (or average) mode and planar mode, or directional modes as defined, for example, in the yet - to - be - released H.266.

[0134] The set of intra prediction modes (or possible intra prediction modes) depends on whether the available reference pictures (i.e., previous, at least partially decoded pictures stored, for example, in DPB 230) and other inter - prediction parameters, such as the entire reference picture or only a part of the reference picture, for example, the search window area around the area of the current block, are used to find the reference block that shows the best match, and / or, for example, whether pixel interpolation, such as half / semi - pel and / or quarter - pel interpolation, is applied.

[0135] In addition to the above prediction modes, a skip mode and / or a direct mode may be applied.

[0136] The prediction processing unit 260 may be further configured to repeatedly use, for example, quadtree partitioning (QT), binary tree partitioning (BT), or ternary tree partitioning (TT) or any combination thereof to divide the block 203 into smaller block partitions or sub - blocks, and, for example, to perform predictions for each of the block partitions or sub - blocks. The mode selection has a selection of the tree structure of the divided block 203 and the prediction modes 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 acquire the picture block 203 (the current picture block 203 of the current picture 201) and the decoded picture 231, or at least one or a plurality of previously reconstructed blocks, for example, the reconstructed blocks of one or a plurality of other / different previously decoded pictures 231, for motion estimation. For example, the video sequence may have a current picture and a previously decoded picture 231, or, in other words, the current picture and the previously decoded picture 231 may be consecutive parts of the pictures forming the video sequence or may form it.

[0138] The encoder 20 may be configured to select a reference block from a plurality of reference blocks of the same or different pictures of a plurality of other pictures, and supply an offset (spatial offset) between the reference picture (or reference picture index, ···) and / or the position of the reference block (x, y coordinates) and the position of the current block to a motion estimation unit (not shown in FIG. 2) as an inter-prediction parameter. This offset is also called a motion vector (MV).

[0139] The motion compensation unit is configured to obtain, for example, receive, an inter prediction parameter and perform an inter prediction based on or using the inter prediction parameter to obtain an 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 the motion / block vector determined by motion estimation and optionally performing interpolation for 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 a picture block. Upon receiving a motion vector for the current picture block's PU, the motion compensation unit may find the prediction block indicated by the motion vector in one of the reference picture lists. The motion compensation unit may also generate blocks and syntax elements related to the video slice used by the video decoder 30 when decoding the picture blocks of the video slice.

[0140] The intra prediction unit 254 is configured to obtain, for example, receive, the picture block 203 (current picture block) and one or more previously reconstructed blocks of the same picture, for example, reconstructed adjacent blocks, for intra estimation. The encoder 20 may be configured to select an intra prediction mode from, for example, a plurality of (predetermined) intra prediction modes.

[0141] Embodiments of the encoder 20 may be configured to select an intra prediction mode based on an optimization criterion, for example, minimum residual (e.g., the intra prediction mode that results in the prediction 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 an intra prediction block 255 based on intra prediction parameters, for example, a selected intra prediction mode. In any case, after selecting an intra prediction mode for a block, the intra prediction unit 254 is also configured to supply intra prediction parameters, that is, information indicating the selected intra prediction mode for that 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 later.

[0143] The entropy encoding unit 270 is configured to obtain encoded picture data 21 that can be output by the output unit 272, for example, in the form of an encoded bitstream 21, by applying (or not applying at all) an entropy encoding algorithm or scheme (e.g., variable length coding (VLC) scheme, context adaptive VLC scheme (CALVC), arithmetic coding scheme, context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or other entropy encoding methodologies or techniques) individually or together to the quantized residual coefficients 209, inter prediction parameters, intra prediction parameters, and / or loop filter parameters. The encoded bitstream 21 may be sent to the video decoder 30 or may be archived for later transmission or reading by the video decoder 30. The entropy encoding unit 270 may be further configured to entropy encode the remaining syntax elements for the current video slice during coding.

[0144] Other structural variations of the video encoder 20 can be used to encode a video stream. For example, a non-transform-based encoder 20 can directly quantize the residual signal for a particular block or frame without relying on the conversion processing unit 206. In other implementations, the encoder 20 can have a quantization unit 208 and an inverse quantization unit 210 combined into a single unit.

[0145] FIG. 3 shows an example video decoder 30 configured to implement the technology of the present application. The video decoder 30 is configured to receive encoded picture data (e.g., an encoded bitstream) 21 encoded by, for example, the encoder 20 in order to obtain a decoded picture 131. During the decoding process, the video decoder 30 receives from the video encoder 20 video data, e.g., an encoded video bitstream representing picture blocks of an encoded video slice and associated syntax elements.

[0146] In the example of FIG. 3, the decoder 30 has an entropy decoding unit 304, an inverse quantization unit 310, an inverse conversion processing unit 312, a reconstruction unit 314 (e.g., an integrator 314), a buffer 316, a loop filter 320, a decoded picture buffer 330, and a prediction processing unit 360. The prediction processing unit 360 may include an inter prediction unit 344, an intra prediction unit 354, and a mode selection unit 362. The video decoder 30 may, in some examples, execute a decoding path that is generally inverse to the encoding path described for the video encoder 20 of FIG. 2.

[0147] The entropy decoding unit 304 is configured to perform entropy decoding on the encoded picture data 21, for example, to obtain any or all of the quantized coefficients 309 and / or decoded coding parameters (not shown in FIG. 3), for example, inter prediction parameters, intra prediction parameters, loop filter parameters, and / or other syntax elements. The entropy decoding unit 304 is further configured to transfer the inter prediction parameters, intra prediction parameters, and / or other syntax elements to the prediction processing unit 360. The 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 have the same function as the inverse quantization unit 210, the inverse transform processing unit 312 may have the same function as the inverse transform processing unit 212, the reconstruction unit 314 may have the same function as the reconstruction unit 214, the buffer 316 may have the same function as the buffer 216, the loop filter 320 may have the same function as the loop filter 220, and the decoded picture buffer 330 may have the same function as the decoded picture buffer 230.

[0149] The prediction processing unit 360 may include an inter prediction unit 344 and an intra prediction unit 354. The inter prediction unit 344 may have a function similar to that of the inter prediction unit 244, and the intra prediction unit 354 may have a function similar to that of the intra prediction unit 254. The prediction processing unit 360 is typically configured to perform block prediction and / or obtain a prediction block 365 from the encoded data 21, and to receive or obtain information regarding prediction-related parameters and / or selected prediction modes (explicitly or implicitly), for example, from the entropy decoding unit 304.

[0150] When the video slice is coded as an intra-coded (I) slice, the intra prediction unit 354 of the prediction processing unit 360 is configured to generate a prediction block 365 for a picture block of the current video slice based on the notified intra prediction mode and data from previously decoded blocks in the current frame or picture. When the video frame is coded as an inter-coded (i.e., B or P) slice, the inter prediction unit 344 (e.g., motion compensation unit) of the prediction processing unit 360 is configured to generate a prediction block 365 for a video block of the current video slice based on the motion vector and other syntax elements received from the entropy decoding unit 304. For inter prediction, the prediction block may be generated from one of the reference pictures in one of the reference picture lists. The video decoder 30 may configure the reference frame lists, List0 and List1, using default configuration techniques based on the reference pictures stored in the DPB 330.

[0151] The prediction processing unit 360 is configured to determine prediction information for a video block of the current video slice by parsing the motion vector and other syntax elements, and use the prediction information to generate a prediction block for the current video block being decoded. For example, the 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 block of the video slice, the inter prediction slice type (e.g., B slice, P slice, or GPB slice), the configuration information for one or more of the reference picture lists for the slice, the motion vector 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 block within the current video slice.

[0152] The inverse quantization unit 310 is configured to inverse quantize, i.e., dequantize, the quantized transform coefficients supplied in the bit stream and decoded by the entropy decoding unit 304. The inverse quantization process may include the use of quantization parameters calculated by the video encoder 20 for each video block within the video slice to determine the degree of quantization and, similarly, the degree of inverse quantization to be applied.

[0153] The inverse transform processing unit 312 is configured to apply an inverse transform, such as an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients to generate a residual block 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.

[0155] The loop filter unit 320 (either within or after the coding loop) is configured to filter the reconstructed block 315, for example, to smooth pixel transitions or otherwise improve video quality to obtain a filtered block 321. In one example, the loop filter unit 320 may be configured to perform any combination of filtering techniques described later. The 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, such as a bilateral filter, an adaptive loop filter (ALF), or a sharpening or smoothing filter, or a collaborative filter. The loop filter unit 320 is shown as an in-loop filter in FIG. 3, but in other configurations, the loop filter unit 320 may be implemented as a post-loop filter.

[0156] The decoded video block 321 within a given frame or picture is then stored in the decoded picture buffer 330. The decoded picture buffer 330 stores reference pictures for subsequent motion compensation.

[0157] The decoder 30 is configured to output the decoded picture 311, for example, via the output unit 332, for presentation or display to the user.

[0158] Other variations of the video decoder 30 can be used to decode the compressed bitstream. For example, the decoder 30 can generate an output video stream without relying on the loop filtering unit 320. For example, a non-transform-based decoder 30 can directly inverse quantize the residual signal without relying on the inverse transform processing unit 312 for a particular block or frame. In other implementations, the video decoder 30 can have an inverse quantization unit 310 and an inverse transform processing unit 312 combined into a single unit.

[0159] FIG. 4 is a schematic diagram of a video coding device 400 according to an embodiment of the present disclosure. The video coding device 400 is suitable for implementing the disclosed embodiments as described herein. In an embodiment, the video coding device 400 can be a decoder such as the video decoder 30 of FIG. 1A or an encoder such as the video encoder 20 of FIG. 1A. In an embodiment, the video coding device 400 can be one or more components of the video decoder 30 of FIG. 1A or the video encoder 20 of FIG. 1A as described above.

[0160] The video coding device 400 has an input 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 output port 450 for transmitting data, and a memory 460 for storing data. The video coding device 400 may also have optoelectronic (OE) components and electro-optical (EO) components coupled to the input port 410, the receiver unit 420, the transmitter unit 440, and the output port 450 for the entry or exit of optical or electrical signals.

[0161] The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), FPGAs, ASICs, and DSPs. The processor 430 communicates with the input port 410, the receiver unit 420, the transmitter unit 440, the output port 450, and the memory 460. The processor 430 has 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 brings a substantial improvement to the functionality of the video coding device 400 and achieves variations of the video coding device 400 in 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 have one or more disks, tape drives, and solid state drives, and be used as an overflow data storage device to store programs when such programs are selected for execution, and to store instructions and data read during program execution. 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] FIG. 5 is a schematic block diagram of an apparatus 500 that can be used as either or both of the source device 12 and the destination device 14 of FIG. 1A according to an exemplary embodiment. The apparatus 500 can implement the technology of the present application described above. The apparatus 500 can take the form of a computing system including a plurality of computing devices, or the form of a single computing device, such as a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer, etc.

[0164] The processor 502 in the apparatus 500 can be a central processing unit. Alternatively, the processor 502 can be any other type of device or devices that can operate on or process information, whether currently existing or to be developed in the future. The disclosed embodiments can be implemented by a single processor, such as processor 502 as shown, but the advantages of speed and efficiency can be achieved using more than one processor.

[0165] The memory 504 within the device 500 can be, in an implementation, a read-only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device can be used as the memory 504. The memory 504 can include code and data 506 that are accessed by the processor 502 using the bus 512. The memory 504 can further include an operating system 508 and an application program 510, and the application program 510 includes at least one program that enables the processor 502 to execute the methods described herein. For example, the application program 510 can include applications 1 through N that further include a video coding application that executes the methods described herein. The device 500 can also include additional memory in the form of a secondary storage device 514, which can be, for example, a memory card used with a mobile computing device. Since video communication sessions can contain a significant amount of information, they can 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 can also include one or more output devices, such as a display 518. In one example, the display 518 can be a touch-sensing display that combines a touch-sensing element operable to detect touch inputs with a display. The display 518 can 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 can be provided in addition to or in place of the display 518. When the output device is or includes a device display, the display can be implemented in various 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] Device 500 also includes, or is communicable with, an image sensing device 520, such as a camera, or any other currently existing or later developed image sensing device 520 capable of sensing an image, such as an image of a user operating device 500. The image sensing device 520 can be positioned so as to be directed towards the user operating device 500. In an example, the position and optical axis of the image sensing device 520 can be set such that the field of view is adjacent to the display 518 and includes the area visible to the eye of the display 518.

[0168] Device 500 also includes, or is communicable with, an acoustic sensing device 522, such as a microphone, or any other currently existing or later developed acoustic sensing device capable of sensing an acoustic near device 500. The acoustic sensing device 522 can be positioned so as to be directed towards the user operating device 500 and can be configured to receive an acoustic, such as speech or other vocalization, emitted by the user while the user is operating device 500.

[0169] FIG. 5 depicts the processor 502 and the memory 504 of device 500 as being incorporated into a single unit, although other configurations are available. The operations of the processor 502 can be distributed across a plurality of machines (each machine having one or more processors) that can be directly or coupled over a local area or other network. The memory 504 can be distributed across a plurality of machines, such as a network-based memory or the memory within a plurality of machines that execute the operations of device 500. Although represented here as a single bus, the bus 512 of device 500 can be composed of a plurality of buses. Further, the secondary storage device 514 can be directly coupled to the other components of device 500 or can be accessible via a network and can have a single integrated unit, such as a memory card, or a plurality of units, such as a plurality of memory cards. Device 500 can thus be implemented in a wide variety of configurations.

[0170] The video coder 20 may divide an input video frame into blocks before encoding. The term "block" in the present disclosure is used for any type of block or blocks of any depth. For example, the term "block" includes, but is not limited to, root blocks, blocks, sub-blocks, leaf nodes, etc. The blocks to be coded do not necessarily have the same size. One picture may include blocks of different sizes, and the block raster of different pictures in a video sequence may also be different. FIGS. 6A-6E illustrate the coding tree unit (CTU) / coding unit (CU) partitioning modes in VVC.

[0171] FIG. 6A illustrates a block partition structure by adopting a quadtree (QT) partition. QT is a tree structure for a block partition in which a node of size 4M×4N can be divided into four child nodes of size 2M×2N.

[0172] FIG. 6B illustrates a block partition structure by adopting a binary tree (BT) partition in the vertical direction.

[0173] FIG. 6C illustrates a block partition structure by adopting a binary tree (BT) partition in the horizontal direction. BT is a tree structure for a block partition in which a node of size 4M×4N can be divided either 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 a ternary tree (TT) partition in the vertical direction.

[0175] FIG. 6E illustrates a block partition structure by adopting a quadtree (QT) split in the horizontal direction. The QT is a tree structure for a block partition that can be either that a node of size 4M×4N is horizontally split into three child nodes of sizes 4M×N, 4M×2N, and 4M×N respectively, or that it is vertically split into three child nodes of sizes M×4N, 2M×4N, and M×4N respectively. Among the three child nodes shown in FIG. 6D or FIG. 6E, the largest node is positioned in the center.

[0176] The quadtree plus binary tree (QTBT) is a quadtree plus binary tree structure in which a block is first split using a quadtree split, and then each quadtree child node can be further split using a binary tree split. The quadtree plus binary tree or quadtree (QT-BT / TT) is a quadtree plus binary tree or quadtree structure in which a block is first split using a quadtree split, and then each quadtree child node can be further split using a binary tree or quadtree split.

[0177] For a block related to a specific partition depth, the encoder 20 determines which partition type (including no further split) is used, and notifies the decoder 30 of the determined partition type explicitly or implicitly (for example, the partition type can be derived from a predetermined rule). The encoder 20 may determine the partition type to be used, for example, based on checking the rate distortion cost for that block using different partition types.

[0178] The term "block" in the present invention is a generalized term including, but not limited to, a root block, a block, a sub-block, a leaf node, etc.

[0179] The video coding standard introduces 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 split separately, i.e., using independent partitioning schemes for the luma and chroma components.

[0180] The picture compression level can be fixed for the whole picture (e.g., by using the same quantization parameter value) or controlled by a quantization parameter (QP) that can 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 changing of the QP value for different regions of the picture, especially at several CU depths (i.e., the partition depth that defines the layer of the partition). To notify the QP for a specific region of the picture, the delta QP signaling method is used. In this method, the predicted QP (QP c_pred) The difference between this 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 divided block) are defined by an on-off control flag and a maximum depth (e.g., a delta QP syntax element) within the picture parameter set (PPS). For all CUs having a higher partition depth, the delta QP value is not signaled and may be inherited from the topmost 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 variable is given by the following Equation 1: Qp Y =((qPY_PRED+CuQpDeltaVal+52+2*QpBdOffsetY)%(52+QpBdOffsetY))-QpBdOffsetY (Equation 1) is derived.

[0182] Here, 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 (in the HEVC standard, this term corresponds to the "bit depth of samples of the luma array"). Finally, the quantization parameter Qp’ Y of the luminance (or luma) component is given by the following Equation 2: Qp’ Y =Qp Y +QpBdOffsetY (Equation 2) can be calculated.

[0183] The variables qPCb and qPCr are set equal to the value of QpC specified in a quantization table (e.g., Table 1) based on an index qPi equal to qPiCb or qPiCr respectively, and qPiCb and qPiCr are derived as follows by Equation 3: 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) (Equation 3)

[0184] Here, QpBdOffsetC is a fixed offset that depends on the chroma bit depth (from the HEVC standard specification, this term corresponds to the "bit depth of the samples of the chroma array"), pps_cb_qp_offset or pps_cr_qp_offset is a fixed offset for the Cb or Cr component notified 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 notified in the slice header. [Number] [Table 1]

[0185] The chroma quantization parameters (Qp’Cb and Qp’Cr) for the Cb and Cr components are derived as follows by Equation 5: Qp’Cb = qPCb + QpBdOffsetC (Equation 5) Qp’Cr = qPCr + QpBdOffsetC

[0186] It should be noted that the above-described delta QP mechanism is only effective for a single tree (ST) and cannot be applied to a 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 the inverse quantization device within a video decoding device. Embodiments of the present invention propose different ways of applying the delta QP mechanism when a dual tree (DT) is applied.

[0188] Similar to the above-described delta QP mechanism that is only effective for a 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 (Equation 6) Qp’Cr = qPCr + QpBdOffsetC and are derived based on the qPi values.

[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 values. In contrast to the delta QP signaling for a single tree, the present embodiments of the present invention use 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) (Equation 7) to calculate the qPi values for the chrominance (or chroma) components regardless of the type of tree (e.g., single tree or dual tree).

[0190] Here, QpC basicis the basic chroma block QP value that depends on the QP c_pred value and can be calculated in one of the 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 the quantization table (e.g., Table 1), assuming that QP63 is the maximum allowed. Therefore, this constant is calculated as the maximum QP value added to the maximum difference between qPi and QpC. In general cases, this constant may be predefined or notified for several values.

[0192] The dual-tree (DT) coding approach assumes that the luma and chroma components have different partition trees, each having its own partition tree. It can 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 the entire chroma block corresponds to multiple divided luma blocks. The numbers in the figure represent the points (pixels) at the same position between the luma and chroma components (or planes).

[0193] Figure 9 is an example flowchart representing a procedure for performing inverse quantization on the current block of a picture. This procedure may be executed by a decoder. The picture has a luma component and a chroma component, and the luma component and the chroma component are divided 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 are related to the current block in the chroma component.

[0195] In this step, the existing QP values are relevant to the current block (e.g., the block to be processed by inverse quantization). As a mere example, such existing QP values may have at least one of the following: the QP value for the block at the same position in the luma component, the QP values of one or more adjacent blocks of the current block in the chroma component, and the QP values of one or more adjacent blocks of the block at the same position in the luma component.

[0196] The block at the same position in the luma component is the block that has a mapping relationship with the current block in the chroma component.

[0197] Step 904: Determine the QP value for the current block in the chrominance (or chroma) component based on one or more existing QP values.

[0198] There are various sets of methods for determining the QP value for a block in the chroma component (or chroma block QP value, i.e., QP c_pred ). In summary, the first set of methods focuses on determining the chroma block QP value based on existing relevant QP values (e.g., those that should be regarded as predictions), the second set of methods is to determine the chroma block QP value based on existing relevant QP values (e.g., those that should be regarded as predictions) and the chrominance delta QP value (e.g., those that should be regarded as deltas) notified in the received bitstream, and the third set of methods is to determine the chroma block QP value based on existing relevant QP values (e.g., those that should be regarded as predictions) and the chrominance QP offset value (e.g., those that should be regarded as adjustment offsets) notified 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 (or chroma block QP value) for the current block in the chrominance component, inverse quantization is performed on that block in the chrominance component.

[0201] Figure 10 is an example flowchart representing a procedure for performing inverse quantization on the current block of a picture. This procedure may be executed by an encoder.

[0202] Step 1010: In this step, the quantization of the current block in the chrominance component is performed using the determined QP. The QP 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. This / these existing QP values are also included in the bitstream. The one or more existing QP values are related to the current block in the chrominance component.

[0204] Step 1030: The QP parameter for the current block in the chrominance component is determined / shown based on the one or more existing QP values and the determined QP value. In particular, for carrying the value of the QP (determined QP) for the current block in the chrominance component, the parameter is included in the bitstream, where the parameter is determined using the one or more existing QP values. The process may be performed by subtracting the one or more existing QP values from the determined QP, or in other ways, for example, by an equation that also includes additional parameters.

[0205] Step 1040: Next, the QP parameter is included in the bitstream. The inclusion in the bitstream may further have entropy coding such as integer coding 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 can function with any kind of coding including fixed-length coding.

[0206] According to an embodiment, the apparatus is provided for quantization and inverse quantization that can be used in each encoder and decoder. They have features corresponding to the above-described encoding and decoding methods.

[0207] In particular, an apparatus for inverse quantization of a current block of a picture is provided, 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 as apparatus 1100 in FIG. 11. It further includes the following functional units (circuits).

[0208] A bitstream parser (also called a bitstream parsing unit (or circuit)) 1110 that obtains one or more existing quantization parameter QP values from the bitstream. The one or more existing QP values are related to the current block in the chrominance component. The chrominance component may be any one or more of the chrominance components.

[0209] A QP determination unit (or circuit) 1120 that determines a QP value for the current block in the chrominance component based on the one or more existing QP values.

[0210] An inverse quantizer (also called an inverse quantization unit (or circuit)) 1130 that performs inverse quantization on the current block in the chrominance component by using the determined QP value.

[0211] Also provided is an apparatus 1200 shown in FIG. 12 for quantization of the current block of a picture. The picture has a luminance component and a chrominance component, and the luminance component and / or the chrominance component are divided into a plurality of blocks. The apparatus a quantizer 1210 (also referred to as a quantization unit (or circuit)) that performs quantization on the current block in the chrominance component by using the determined QP value, a fetch unit (or circuit) 1220 that obtains one or more existing quantization parameter QP values and includes 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, a QP determination unit (or circuit) 1230 that determines 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, and a bitstream generation unit (or circuit, also referred to as a bitstream generator) 1240 that includes the QP parameter in the bitstream and has.

[0212] The following is an embodiment for determining a chroma block QP value.

[0213] I. Determination of chroma block QP value based on one or more related existing QP values In the first set of methods, three groups of methods are provided.

[0214] A. The first group of methods: In this group of methods, the chroma block QP value QP c_pred is calculated based on the luma QP value at the same position represented as QP c_pred_luma and.

[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 block at the same position in the luminance component. One point in the chroma plane (or component) is selected (the mapping point, e.g., point C 5 represented as), QP c_pred_luma is determined to be the QP value from the block at the same position as the current mapping point (e.g., point L 5 ) in the luma (or luminance) plane. For example, when point C 5 in FIG. 8 is selected as the mapping point, QPc_pred_luma is equal to the luma QP value from the corresponding L 5 point in the luma coding block (e.g., the block where point L 5 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 in FIG. 8.

[0216] More specifically, Equation 7 can be rewritten in the following way: 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] Here, QpY_basic is determined according to the partitioning tree type as follows: - When the 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 luma CU at the same position 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 at the same position as the current chroma coding block with respect to the top-left luma sample of the current picture.

[0219] Furthermore, the QpY value can be calculated according to the following formula: QpY = ((qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffsetY) % (64 + QpBdOffsetY)) - QpBdOffsetY can be calculated according to.

[0220] Here, qPY_PRED, CuQpDeltaVal, and QpBdOffsetY are calculated in the normal way for the luma CU at the same position. The constant is 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 block at the same position. The block at the same position may be a luma component block at the same position as the current block. In general, it should be noted that the partitioning of the luma (coding tree) block may be different from the partitioning of the (coding tree) chrominance block. Thus, there may be more (or fewer or the same number of) luma blocks covering the same chrominance block and the same picture area. Thus, in this example, the block at the same position is determined as the luma block covering the area including a specific, pre-defined sample of the current chrominance block. For example, the specific sample may be the top-left sample in the lower-right quarter of the current chrominance block. This exemplary sample position is located at or near the center or the current block. However, the present disclosure is not limited to this specific sample position. Any other position, such as the top-left, may be taken.

[0222] Appendix A gives a detailed example of the derivation process of quantization parameters.

[0223] (2) In the second method, 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 adjacent blocks of the block at the same position in the luminance component. In this method, QP c_pred_luma is calculated based on the values at the same position of the luma QP values from several specific points with the same weight. For example, QP c_pred_luma is given by the following formula:

Equation

[0224] (3) In the third method, QP c_pred_luma is calculated based on the common set of chroma coding unit (CU) values and the luma CU at the same position in one of the following ways.

[0225] Option 1: When the chroma CU is completely covered by one luma CU, QP c_pred_luma is taken from the luma CU.

[0226] Option 2: When the chroma CU is covered by more than one luma CU and all such luma CUs have the same QP value, QP c_pred_luma is taken from the luma CU.

[0227] Option 3: When a luma CU covering more than one chroma CU and not all such luma CUs have the same QP value, QP c_pred_luma is taken from the luma CU based on a weighted function of the QP values for the luma CUs, 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 group of methods, the QP prediction of a chroma CU is calculated based on the QP values of adjacent chroma CUs (i.e., the QP values of one or more adjacent blocks of a block in the chrominance component), and QP c_pred_chroma is represented as. 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 adjacent blocks of the current block in the chrominance component. The methods within this group can operate on any adjacent chroma CUs that are already available on the decoder side. In that case, QP c_pred_chroma is given by the following Equation 9:

Equation

[0229] C. Third group of methods: In this group of methods, the QP value (or prediction) of a chroma CU is calculated based on both QP c_pred_luma and QP c_pred_chroma calculated by any of the above methods, and the chroma CU QP prediction is QP c_pred_mixedIt is represented as follows. In 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 block at the same position in the luminance component and the weighted sum of the existing QP values of the adjacent 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 adjacent blocks of the current block in the chrominance component and the weighted sum of the existing QP values of the adjacent blocks of the block at the same position in the luminance component. For example, QP c_pred_mixed may be calculated as the weighted sum of QP c_pred_luma and QP c_pred_chroma . In the example, it may be calculated by the following Equation 10:

Equation

[0230] II. Second Set of Methods for Determining Chroma Block QP Values In this set of methods, the QP value for the current block in the chrominance component (or chroma block QP value) is determined based on one or more existing QP values and the chrominance delta QP value notified in the received bitstream, and the one or more existing QP values are related to the current block in the chrominance component.

[0231] This section describes various approaches for determining QpC basic differentials (or deltas) when a dual tree is possible.

[0232] (1) First Method: In this method, the QpC basic value is the QP c_pred_luma , QP c_pred_chroma , or QP c_pred_mixed calculated by any of the corresponding approaches in the first set of methods.It is directly taken from one of the values. In this method, when a dual tree is used, the luma CU has syntax elements for the delta luma QP representation, and the chroma CU has no syntax elements for the 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 way.

[0234] In this method, QpC basic is equal to QP c_pred , and then this is equal to one of the QP c_pred_luma , QP c_pred_chroma , or QP c_pred_mixed values. In that case, the qPi values for the Cb and Cr components are given by 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) (Equation 11) can be calculated by. Here, QpC basic ∈ {QP c_pred_luma , QP c_pred_chroma , QP c_pred_mixed}, and each of QP c_pred_luma , QP c_pred_chroma , QP c_pred_mixed is derived by one of the above methods. More specifically, when combining the current 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] Here, QpY_basic is determined according to the partitioning tree type as follows: - When the 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 luma CU at the same position containing the luma sample at coordinates (xCb + cbWidth / 2, yCb + cbHeight / 2).

[0236] And, (xCb, yCb) 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.

[0237] And, QpY is given by the following equation: QpY = ((qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffsetY) % (64 + QpBdOffsetY)) - QpBdOffsetY (Equation 11.1a) and can be calculated according to the following.

[0238] Here, qPY_PRED, CuQpDeltaVal, and QpBdOffsetY are calculated in the conventional way for the luma CU at the same position.

[0239] The constant 69 in Equations 11 and 11.1 represents the maximum possible QP value incremented by 6, and the constant 64 in Equation 11.1a represents the maximum possible QP value incremented by 1. Appendix A gives a detailed example of the quantization parameter derivation process.

[0240] In this method, the delta_qp signaling function can 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 that specifies whether delta QP is allowed for the current slice / picture / sequence. The flag IsCuQpDeltaCoded specifies whether delta QP is signaled at the current depth. For CU blocks at a 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 conveyed in the Picture Parameter Set (PPS). [Table 5]

[0242] More specifically, a cu_qp_delta_enabled_flag equal to 1 specifies that the diff_cu_qp_delta_depth syntax element exists in the PPS and that cu_qp_delta_abs and cu_qp_delta_sign_flag may exist in the transform unit syntax. A cu_qp_delta_enabled_flag equal to 0 specifies that the diff_cu_qp_delta_depth syntax element does not exist in the PPS and that cu_qp_delta_abs and cu_qp_delta_sign_flag do not exist in the transform unit syntax.

[0243] cu_qp_delta_abs specifies the absolute value of CuQpDeltaVal, which is the difference 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 does not exist, it is assumed to be equal to 0. If cu_qp_delta_abs exists, 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) or more and +(31 + QpBdOffsetY / 2) or less.

[0245] It should be noted that this method can be used for deriving the qPi parameter of the Cb and Cr components either for any chroma CU depth or only for depths smaller than some predefined value. In the latter case, CU blocks located at a higher or equal depth should inherit the value from the closest processed one.

[0246] Alternatively, the first method can also signal a separate syntax for the delta QP of the chroma components.

Table 6

Table 7

[0247] Tables 6 and 7 give two examples of separate delta QP syntax signaling for chroma components, either for the chroma CU only in the case of dual trees, or for both the chroma CU in the case of dual trees and the single CU in the case of separate trees. The procedures delta_qp_y() and delta_qp_c() from Tables 6 and 7 are implemented in a similar way 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 the chroma CU in the case of dual trees and / or for the chroma plane in a single CU, the PPC level control flag cu_qp_delta_enabled_flag in Table 4 can be implemented as two control flags cu_qp_delta_enabled_flag_luma and cu_qp_delta_enabled_flag_chroma, either once (together) for both the luma and chroma components, or separately.

[0248] Assuming a specific case where this method is combined with the above method 1 of QpCbasic derivation, Equation 11 for either the chroma CU in the case of dual trees or (where applicable) both the chroma CU in the case of dual trees and the single CU in the case of separate trees 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] Here, QpY_basic is determined according to the partitioning tree type as follows: - When the 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 luma CU at the same position that includes 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 at the same position as the current chroma coding block with respect to the top-left luma sample of the current picture.

[0251] And, the QpY value can be calculated according to the following equation: QpY = ((qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffsetY) % (64 + QpBdOffsetY)) - QpBdOffsetY (Equation 11.3) can be calculated according to

[0252] Here, qPY_PRED, CuQpDeltaVal, and QpBdOffsetY are calculated in the conventional manner for the luma CU at the same position.

[0253] The constant 69 in Equation 11.2 represents the maximum possible QP value incremented by 6, and the constant 64 in Equation 11.3 represents the maximum possible QP value incremented by 1.

[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 for calculating qPiCb and qPiCr values, and then the calculation of QpCb and QpCr values is performed in a conventional manner based on qPiCb and qPiCr using the chroma QP mapping function. The conventional chroma QP mapping function is shown in Table 17.

[0256] (2) Second method: In this method, QpC basic value is derived as the sum of one of the QP c_pred_luma , QP c_pred_chroma , or QP c_pred_mixed values calculated by any of the corresponding prediction approaches described above and the CuQpChromaDeltaVal value that can be signaled in the chroma CU. In this method, for the case of dual trees, the luma CU has syntax elements for the delta luma CU representation, and the chroma CU has syntax elements for different representations of the delta chroma CU.

Table 8

[0257] In this method, QpC basic can be calculated by the following Equation 12: QpC basic = QPc_pred + CuQpChromaDeltaVal (Equation 12) Here, QP c_pred ∈ {QP c_pred_luma , QP c_pred_chroma , QP c_pred_mixed}, where each of QP c_pred_luma , QP c_pred_chroma , QP c_pred_mixed is derived by one of the methods described above, and CuQpChromaDeltaVal is the delta QP value of the chroma block that can be derived by the following Equation 13: CuQpChromaDeltaVal = cu_chroma_qp_delta_abs * (1 - 2 * cu_chroma_qp_delta_sign_flag) (Equation 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) (Equation 14)

[0259] In this method, the delta_qp_luma and delta_qp_chroma signaling functions can be implemented, for example, in the following way. [Table 9]

[0260] In Table 9, the syntax element cu_luma_qp_delta_enabled_flag represents a high-order flag that specifies whether delta luma QP is allowed for the current slice / picture / sequence. The flag IsLumaCuQpDeltaCoded specifies whether the delta QP is signaled at the current depth. For luma CU blocks at a 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 conveyed in the PPS. [Table 10]

[0261] In Table 10, the syntax element cu_chroma_qp_delta_enabled_flag represents a high-order flag that specifies whether the delta chroma CU is allowed for the current slice / picture / sequence. The flag IsChromaCuQpDeltaCoded specifies whether the delta QP is signaled at the current depth. For chroma CU blocks at a 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 may be signaled in the PPS. [Table 11]

[0262] (3) Third method: In this method, the QpC basic value is derived as the sum of the QP c_pred_luma , QP c_pred_chroma , or QP c_pred_mixed value, and the CuQpChromaDeltaVal value that can be signaled only for chroma CUs with respect to the chroma CU depth at some predefined depths. For all chroma CUs with a depth higher than the predefined one, the QpC basic value is inherited from the closest processed one. In this method, in the case of a dual tree, the luma CU has the syntax element for the delta luma QP representation, and the chroma CU has the syntax element for the delta chroma QP representation only for chroma CUs with a depth below the predefined one.

[0263] In this method, the delta QP value can be signaled according to Tables 5 and 6, and the delta_qp_chroma() function can be implemented in the following way: [Table 12]

[0264] The IsChromaCuQpDeltaCoded flag in Table 12 is equal to 0 only for chroma CUs with depths less than or equal to those predefined below.

[0265] (4) Fourth method: In this method, a special syntax element can identify 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., in PPC, and can identify which type of any of the above predictor calculation approaches is used. [Table 13]

[0266] In this method, cu_qp_chroma_der_type can identify any group of prediction types, in which case any specific one of the above predefined predictions can be used within the group.

[0267] It should be noted that cu_qp_chroma_der_type represents an index in group P, in which case the QpC basic values of the Cb and Cr components are derived based on QP c_pred using one of the above methods from 1 to 3.

[0268] (5) Fifth method: In this method, cu_qp_chroma_der_type can identify 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, in which case the QpC basic values for the Cb and Cr components are derived based on one of the above methods from the first to the third for QP c_pred and at this time, QP c_pred = P[cu_qp_chroma_qp_der_type].

[0270] III. Third set of methods for determining the chroma block QP value The QP value for the current block in the chrominance component is determined based on one or more existing QP values and the chrominance QP offset value (or delta QP offset) notified in the received bitstream, and the one or more existing QP values are related to the current block in the chrominance component.

[0271] This section discloses the use of the chroma QP offset mechanism when a separate tree (ST) is possible.

[0272] In the first method, the QP values Qp’Cb and Qp’Cr for Cb and Cr are calculated based on qPiCb and qPiCr, where qPiCb and qPiCr are calculated by 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) (Equation 15) Here, QpC basic value is the QP calculated by any of the corresponding prediction approaches above, c_pred_luma the QP c_pred_chroma or the QP c_pred_mixed value, and the CuQpOffsetCb / CuQpOffsetCr variables are derived based on the cb_qp_offset_list and cu_chroma_qp_offset_idx syntax elements by the following Equation 16: CuQpOffsetCb = cb_qp_offset_list[cu_chroma_qp_offset_idx] CuQpOffsetCr = cr_qp_offset_list[cu_chroma_qp_offset_idx] (Equation 16)

[0273] The syntax elements cb_qp_offset_list and cr_qp_offset_list are offset tables that can be signaled, for example, in the PPS, in the parameter set, 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] The cu_chroma_qp_offset_idx identifies specific elements in the cb_qp_offset_list and cr_qp_offset_list that can 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 described in Table 16 below.

Table 16

[0278] According to another embodiment of the present invention, a method for the quantization parameter derivation process is described as follows.

[0279] Appendix A. Quantization Parameter Derivation Process In this process, the luma quantization parameter Qp' Y and the chroma quantization parameters QP' Cb and Qp' Cr are 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 relative 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 relative 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 relative 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 sharing 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 if 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 within 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 within the previous quantization group in decoding order.

[0285] 2. The process of deriving the availability of a block in the z-scan order specified in the XXX section is called using as inputs the position (xCurr, yCurr) set equal to (xCb, yCb) and the adjacent position (xNbY, yNbY) set equal to (xQg - 1, yQg), and the output is assigned to the available A. The variable QpY_A is derived as follows: - When one or more of the following conditions are true, QpY_A is set equal to qPY_PREV: - The available A is equal to 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, and at this time, 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] 3. The process of deriving the availability of a block in the z-scan order specified in the XXX section is called using as inputs the position (xCurr, yCurr) set equal to (xCb, yCb) and the adjacent position (xNbY, yNbY) set equal to (xQg, yQg - 1), and the output is assigned to the available B. The variable QpY_B is derived as follows: - When one or more of the following conditions are true, QpY_B is set equal to qPY_PREV: - The available B is equal to FALSE. - The coding tree block address ctbAddrB of the coding tree block that includes the luma coding block covering the luma position (xQg, yQg-1) is not equal to CtbAddrInTs, and at this time, 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 that includes 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] The 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 the index qPi that is equal to qPiCb and qPiCr respectively, and qPiCb and qPiCr are 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] Here, QpY_basic is determined according to the partitioning tree type as follows: - When the 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 luma CU at the same position containing the luma sample with coordinates (xCb + cbWidth / 2, yCb + cbHeight / 2).

[0292] Chrominance quantization parameter Qp' for Cb and Cr components Cb and Qp' Cr are 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, here, the method further comprises determining the QP value for the current block in the chrominance component based on the weighted sum of the existing QP values of one or more adjacent blocks of the block at the same position in the luminance component.

[0294] As a mere example, since there are four adjacent blocks of the block at the same position 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 adjacent blocks of the block at the same position in the luminance component. It should sometimes be stated here that there may be no adjacent blocks of the block at the same position. 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 the QP value for the current block in the chrominance component based on a weighted sum of the existing QP values of the adjacent 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 the QP value for the current block in the chrominance component based on both the QP value of the block at the same position in the luminance component and a weighted sum of the existing QP values of the adjacent blocks of the current block in the chrominance component.

[0297] According to an example of the first aspect of the present invention, here, the method further comprises determining the QP value for the current block in the chrominance component based on both a weighted sum of the existing QP values of the adjacent blocks of the current block in the chrominance component and a weighted sum of the existing QP values of the adjacent blocks of the block at the same position in the luminance component.

[0298] The following is an explanation of the application of the encoding method and decoding method shown in the above embodiments and the system using them.

[0299] FIG. 13 is a block diagram showing a content supply system 3100 that realizes a content distribution service. This content supply system 3100 includes a capture device 3102 and a terminal device 3106, and optionally includes a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication link 3104. The communication link may include the above-described communication channel 13. The communication link 3104 includes, 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 the data by the encoding method shown in the above embodiments. Alternatively, the capture device 3102 may distribute the data to a streaming server (not shown), and the server encodes the data and sends the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or a tablet, a computer or a laptop, a video conferencing system, a PDA, an in-vehicle device, or any combination thereof. For example, the capture device 3102 may include the above-described source device 12. When the data includes video, the video encoder 20 included in the capture device 3102 may actually execute video encoding processing. When the data includes audio (i.e., voice), the audio encoder included in the capture device 3102 may actually execute audio encoding processing. For some practical scenarios, the capture device 3102 distributes the encoded video and audio data by multiplexing them together. For other practical scenarios, for example, in a video conferencing system, the encoded audio data and the encoded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and the encoded video data to the terminal device 3106 separately.

[0301] In the content supply system 3100, the terminal device 3106 receives and plays back the encoded data. The terminal device 3106 can be a smartphone or a tablet 3108, a computer or a 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 a combination thereof, etc., which are devices with data reception and recovery capabilities. For example, the terminal device 3106 may include the above-mentioned destination device 14. When the encoded data includes video, the video decoder 30 included in the terminal device is prioritized to perform video decoding. When the encoded data includes audio, the audio decoder included in the terminal device is prioritized to perform audio decoding processing.

[0302] For a terminal equipped with its display, such as a smartphone or a tablet 3108, a computer or a 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 supply the decoded data to its display. For a terminal without a display, such as an STB 3116, a video conferencing system 3118, or a video surveillance system 3120, an external display 3126 is touched therein to receive and display the decoded data.

[0303] When each device in this system performs encoding or decoding, the picture encoding device or the picture decoding device shown in the above embodiments can be used.

[0304] FIG. 14 is a diagram showing the structure of an example 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. The protocol includes, but is not limited to, Real-Time Streaming Protocol (RTSP), Hyper-Text Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real-Time Transport Protocol (RTP), Real-Time Messaging Protocol (RTMP), or any combination of those of any kind, etc.

[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 described above, for 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. The video decoder 3206 including the video decoder 30 as described in the above embodiment decodes the video ES by the decoding method shown in the above embodiment to generate video frames, and supplies this data to the synchronization unit 3212. The 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 supplying them to the synchronization unit 3212. Similarly, the audio frames may be stored in a buffer (not shown in FIG. 14) before supplying them to the synchronization unit 3212.

[0307] The synchronization unit 3212 synchronizes the video frame and the audio frame, and supplies the video / audio to the video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. The information may be coded in syntax using a time stamp for the presentation of coded audio and visual data and a time stamp for the delivery of the data stream itself.

[0308] When subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes them with the video frame and the audio frame, and supplies the video / audio / subtitle 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, 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 the 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, one or more existing QP values have at least one of the following: the QP value of a block at the same position in the luminance component, the existing QP values of one or more adjacent blocks of the block at the same position in the luminance component, and the existing QP values of one or more adjacent blocks of the current block in the chrominance component.

[0312] In an exemplary implementation, the method further includes determining a QP value for the current block in the chrominance component based on the QP value of a block at the same position in the luminance component.

[0313] Alternatively, or additionally, the step of determining a QP value for the current block in the chrominance component based on the QP value of a block at the same position in the luminance component includes determining a luminance block that is at the same position as the upper left sample within the lower right quarter of the current chrominance block, extracting the QP value (QpY_basic) of the determined luminance block, and 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 a new formula derived from the following formula to determine the qPiCb and qPiCr parameters for the current chrominance block, 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 given by the following formula Qp’Cb = QpCb + QpBdOffsetC + delta_qp_c, and / or Qp’Cr = QpCr + QpBdOffsetC + delta_qp_c, or determined 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, the step of determining the QP value for the current block in the chrominance component based on the QP value of the block at the same position in the luminance component includes determining the luminance block at the same position as the upper left sample within the lower right quarter of the current chrominance block, extracting the QP value (QpY_basic) of the determined luminance block, and 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), or the step of determining the qPiCb and qPiCr parameters for the current chrominance block by using a new formula derived from the following formula, and the step of determining the 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 block at the same position in the luminance component is equal to the current block.

[0317] For example, the method is applied together for the luma and chroma planes based on one PPS signal notification control flag (e.g., cu_qp_delta_enabled_flag), and when the control flag (e.g., cu_qp_delta_enabled_flag) is equal to true, the method is applied for both luma and chroma QP derivation, or when the control flag (e.g., cu_qp_delta_enabled_flag) is equal to false, the method is not 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), and when the first control flag (e.g., cu_qp_delta_enabled_flag_luma) is equal to true, the method is applied for luma QP derivation, or when 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 when the second control flag (e.g., cu_qp_delta_enabled_flag_chroma) is equal to true, the method is applied for chroma QP derivation, or when 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 a current block in the chrominance component based on a weighted sum of existing QP values of one or more adjacent blocks of the block at the same position in the luminance component.

[0320] Alternatively, or in addition, the method further comprises determining a QP value for a current block in the chrominance component based on a weighted sum of existing QP values of one or more adjacent blocks of the current block in the chrominance component.

[0321] Alternatively, or in addition, the method further comprises determining a QP value for a current block in the chrominance component based on both a QP value of a block at the same position in the luminance component and a weighted sum of existing QP values of one or more adjacent blocks of the current block in the chrominance component.

[0322] Alternatively, or in addition, the method further comprises determining a QP value for a current block in the chrominance component based on both a weighted sum of existing QP values of adjacent blocks of the current block in the chrominance component and a weighted sum of existing QP values of adjacent blocks of a block at the same position in the luminance component.

[0323] In some exemplary implementations, the method further comprises determining a QP value for a current block in the chrominance component based on at least one of one or more existing QP values and a chrominance delta QP value conveyed in the received bitstream or a chrominance QP offset value conveyed in the received bitstream.

[0324] In some exemplary implementations, the method further comprises obtaining a partition depth value of the current block and, when 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 is determined based on a predefined number or a number conveyed in a parameter set.

[0326] For example, the luminance component and the chrominance component are divided into a plurality of blocks by a single partition tree, or the luminance component and the chrominance component are independently divided by separate partition trees.

[0327] In some example implementations, a delta QP syntax element (e.g., a delta QP syntax element representing a chrominance delta QP value, i.e., delta_qp_c) is conveyed in the bitstream according to the following table: [Table 18]

[0328] In some example embodiments, a delta QP syntax element (e.g., a delta QP syntax element representing a chrominance delta QP value, i.e., delta_qp_c) is conveyed in the bitstream according to the following table: [Table 19]

[0329] In some example implementations, a delta QP syntax element (e.g., a delta QP syntax element representing a chrominance delta QP value, i.e., delta_qp_c) is conveyed in the bitstream according to the following table: [Table 20]

[0330] In some embodiments, a decoding device having a processing circuit that executes any of the foregoing methods is provided.

[0331] In some embodiments, a computer program product having program code for executing a method according to any of the foregoing methods when the computer program is executed on a computing device is provided.

[0332] In an exemplary implementation, there is provided a decoding apparatus for boundary partitioning of a current block of a picture, the decoding 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 configuring the decoding apparatus to perform any of the foregoing methods when executed by the processors.

[0333] In an embodiment, there is provided a computer-readable storage medium having recorded thereon a program for causing a computer to perform a method according to any of the foregoing methods.

[0334] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. The computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium such as a data storage medium, or a communication medium including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communication protocol. Thus, the computer-readable medium generally may correspond to (1) a tangible computer-readable storage medium that is non-transitory, or (2) a communication medium such as a signal or carrier wave. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to read instructions, code, and / or data structures for implementation of 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 can include 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 the desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection can be properly termed a computer-readable medium. For example, when 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, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but instead are directed to non-transitory, tangible storage media. As used herein, disk and disc include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc, where disk typically magnetically reproduces data, while disc optically reproduces data with a laser. Combinations of the above should also be included within the scope of computer-readable media.

[0336] The commands 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 circuits. Accordingly, the term "processor" as used herein may refer to any of the foregoing structures, or any other structure suitable for implementation of the techniques described herein. Further, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques may be implemented entirely in one or more circuits or logic elements.

[0337] The techniques of the present disclosure may be implemented in a variety of devices or apparatuses including wireless handsets, integrated circuits (ICs) or sets of ICs (e.g., chip sets). Although various components, modules, or units are described in the present disclosure to emphasize functional aspects of devices configured to execute the disclosed techniques, implementation by different hardware units is not necessarily required. Rather, as described above, various units may be combined in codec hardware, or provided by a collection of interoperable 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 "AND" of x and y x||y Boolean "OR" of x and y ! Boolean "NOT" x?y:z If x is true or not equal to 0, evaluate as the value of y, otherwise evaluate as 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 syntactic element or variable to which the value "NA" (not applicable) is assigned, the value "NA" is treated as a distinct value of that syntactic 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 the integer values. When acting on a binary argument containing fewer bits than the other argument, 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 the integer values. When acting on a binary argument containing fewer bits than the other argument, 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 the integer values. When acting on a binary argument containing fewer bits than the other argument, 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 as an array index, is evaluated as the value of the variable before the increment operation. -- Decrement, i.e., x-- is equivalent to x = x - 1 and, when used as an array index, is evaluated as 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 notations are used to specify a range of values: x = y..z x, y, and z are integers and z is greater than y. Then x assumes integer values greater than or equal to y and less than or equal to z.

Claims

1. A method for inverse quantization of a current block of a picture, comprising: obtaining one or more existing quantization parameter (QP) values, wherein the color format of the picture is 4:4:4, the obtaining step; determining, based on the one or more existing QP values, a QP value for the current block in the chrominance component of the picture; performing inverse quantization on the current block in the chrominance component by using the determined QP value to obtain inverse quantized coefficients; obtaining an inverse transform block by performing an inverse transform on the inverse quantized coefficients; obtaining a decoded picture based on the inverse transform block; and the one or more existing QP values include at least one of the QP value of the block at the same position in the luminance component of the picture, one or more existing QP values of each of one or more adjacent blocks of the block at the same position in the luminance component, and one or more QP values of each of one or more adjacent blocks of the current block in the chrominance component; the step of determining the QP value for the current block in the chrominance component includes determining the QP value for the current block in the chrominance component based on the QP value of the block at the same position in the luminance component, the step of determining the QP value for the current block in the chrominance component based on the QP value of the block at the same position in the luminance component includes retrieving the QP value of the luminance block at the same position as the sample at a specific position within 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; and the sample at the specific position is the upper left sample within the lower right quarter of the current block in the chrominance component; a method.

2. A method for quantization of a current block of a picture, comprising: obtaining the current block of the picture; ​ Executing quantization on the current block in the chrominance component of the picture by using the determined quantization parameter (QP) value, wherein the color format of the picture is 4:4:4, the step; Obtaining one or more existing QP values and including the one or more existing QP values in a bitstream; 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 QP parameter in the bitstream having, The one or more existing QP values are the following The QP value of the block at the same position in the luminance component of the picture, One or more existing QP values of each of one or more adjacent blocks of the block at the same position in the luminance component, and One or more QP values of each of one or more adjacent blocks of the current block in the chrominance component having at least one of, The step of determining a QP parameter for the current block in the chrominance component includes the step of determining the QP parameter for the current block in the chrominance component based on the QP value of the block at the same position in the luminance component, The step of determining the QP value for the current block in the chrominance component based on the QP value of the block at the same position in the luminance component includes the step of taking out the QP value of the luminance block at the same position as the sample at a specific position in the current block in the chrominance component, and Determining the QP value for the current block in the chrominance component based on the taken-out QP value of the luminance block having, The sample at the specific position is the upper left sample within the lower right quarter of the current block in the chrominance component, method.

3. A decoding device, One or more processors; A non-transitory computer-readable storage medium coupled to the processor and storing programming for execution by the processor having, when the programming is executed by the processor, configuring the decoding device to execute the method according to claim 1 Decoding device **Claim 4** An encoding device, one or more processors; a non-transitory computer-readable storage medium coupled to the processor and storing programming for execution by the processor having, when the programming is executed by the processor, configuring the encoding device to execute the method according to claim 2 Encoding device **Claim 5** A computer program stored on a medium, the computer program being configured to cause a computer to execute the method according to claim 1

Citation Information

Patent Citations

  • Guided image filtering for image content

    US20150016720A1

  • Mode-dependent coefficient scanning and directional transforms for different colour sampling formats

    US20150172652A1

  • Signaling of quantization information in non-quadtree-only partitioned video coding

    WO2018013706A1

  • Method and device for encoding / decoding image, and recording medium storing bit stream

    WO2018066849A1