Picture partitioning method and device

By not further partitioning chroma blocks and only dividing luma blocks, the method improves encoding and decoding efficiency in video codecs, addressing the inefficiencies in conventional chroma component handling.

JP2026031590APending Publication Date: 2026-02-24HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025204464
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2019-07-30
Filing Date
2025-11-26
Publication Date
2026-02-24

AI Technical Summary

Technical Problem

Conventional video encoding techniques have low efficiency in encoding and decoding chroma components of high-definition videos, leading to inefficient data transmission.

Method used

A picture partitioning method where chroma blocks are not further partitioned, allowing only luma blocks to be divided, thereby improving encoding and decoding efficiency.

Benefits of technology

This approach enhances the encoding and decoding efficiency by reducing the maximum throughput of the codec and facilitating its implementation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026031590000001_ABST
    Figure 2026031590000001_ABST
Patent Text Reader

Abstract

Embodiments of the present invention provide a picture partitioning method and a device.SOLUTION: The method includes determining a split mode of a current node, wherein the current node includes a luma block and a chroma block, determining, based on the split mode of the current node and a size of the current node, that the chroma block of the current node is not to be further split, and splitting the luma block of the current node based on the split mode of the current node when the chroma block of the current node is not to be further split. When the chroma block of the current node is not further split, the method may be used to split only the luma block of the current node, thereby improving encoding and decoding efficiency, reducing a maximum throughput of a codec, and facilitating implementation of the codec.SELECTED DRAWING: Figure 9
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present application relates to the field of video coding, and more precisely to a picture partitioning method and device. [Background technology]

[0002] With the rapid development of Internet technology and the increasing enrichment of people's material and spiritual cultures, the demand for video applications on the Internet, especially high-definition video, is increasing. However, high-definition video involves a very large amount of data. In order to transmit high-definition video over the Internet with limited bandwidth, the first problem that needs to be solved is video encoding and decoding. Video coding is used in a wide range of digital video applications, such as broadcast digital television, video transmission over the Internet and mobile networks, real-time conversation applications such as video chat and video conferencing, DVD and Blue-ray discs, video content acquisition and editing systems, and security applications in camcorders.

[0003] Each picture of a video sequence is typically partitioned into a set of non-overlapping blocks, and encoding is typically performed at the block level. For example, predictive blocks are generated through spatial (intra-picture) prediction and / or temporal (inter-picture) prediction. Correspondingly, prediction modes may include intra-prediction modes (spatial prediction) and inter-prediction modes (temporal prediction). The intra-prediction mode set may include 35 different intra-prediction modes, such as omnidirectional modes like DC (or average) mode and planar mode, or directional modes defined in H.265, or 67 different intra-prediction modes, such as omnidirectional modes like DC (or average) mode and planar mode, or directional modes defined in the currently-developed H.266. The set of inter-prediction modes depends on the available reference pictures and other inter-prediction parameters, such as whether the entire reference picture or only a portion of the reference picture is used.

[0004]

[0003] Existing videos are generally color videos, which include chroma components in addition to luma components. Therefore, in addition to encoding and decoding the luma components, the chroma components also need to be encoded and decoded. However, the encoding and decoding efficiency is relatively low in conventional techniques. Summary of the Invention

[0005] SUMMARY OF THE INVENTION An embodiment of the present application (or the present disclosure) provides a picture partitioning apparatus and method.

[0006] According to a first aspect, an embodiment of the present invention relates to a picture partitioning method, the method being executed by a video stream decoding or encoding device, comprising: determining a partition mode of a current node, the current node including luma blocks and chroma blocks; determining, based on the partition mode of the current node and a size of the current node, that the chroma blocks of the current node will not be further partitioned; and, when the chroma blocks of the current node will not be further partitioned, partitioning the luma blocks of the current node based on the partition mode of the current node.

[0007] According to the method in the first aspect, when the chroma blocks of the current node are not further divided, only the luma blocks of the current node can be divided, thereby improving encoding and decoding efficiency, reducing the maximum throughput of the codec, and facilitating implementation of the codec.

[0008] According to a second aspect, an embodiment of the present invention relates to a video stream decoding device comprising a processor and a memory, said memory storing instructions that enable said processor to perform the method according to the first aspect.

[0009] According to a third aspect, an embodiment of the present invention relates to a video stream encoding device comprising a processor and a memory, said memory storing instructions that enable said processor to perform the method according to the first aspect.

[0010] According to a fourth aspect, a computer-readable storage medium is proposed, the computer-readable storage medium storing instructions that, when executed, cause one or more processors to encode video data, the instructions causing the one or more processors to perform a method according to any possible embodiment of the first aspect.

[0011] According to a fifth aspect, an embodiment of the present invention relates to a computer program comprising program code, which when run on a computer performs the method according to any possible embodiment of the first aspect.

[0012] The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawings]

[0013] To more clearly describe the technical solutions in the embodiments or background of the present application, the following describes the accompanying drawings to illustrate the embodiments or background of the present application.

[0014] [Figure 1A] 1 is a block diagram of an example video encoding system implementing embodiments of the present invention;

[0015] [Figure 1B] 4 is a block diagram of an example video encoding system including one or both of the encoder 20 of FIG. 2 and the decoder 30 of FIG. 3.

[0016] [Figure 2] 1 is a block diagram illustrating an exemplary structure of a video encoder for implementing embodiments of the present invention;

[0017] [Figure 3] 2 is a block diagram illustrating an exemplary structure of a video decoder for implementing embodiments of the present invention;

[0018] [Figure 4] FIG. 1 is a block diagram illustrating an example of an encoding device or a decoding device.

[0019] [Figure 5] FIG. 10 is a block diagram showing an example of another encoding device or another decoding device.

[0020] [Figure 6] An example of a sample grid in YUV format is shown below.

[0021] [Figure 7A] Five different division types are shown. [Figure 7B] Five different division types are shown. [Figure 7C] Five different division types are shown. [Figure 7D] Five different division types are shown. [Figure 7E] Five different division types are shown.

[0022] [Figure 8] Indicates quadtree and binary tree partitioning modes.

[0023] [Figure 9] 1 is a flowchart of a method according to embodiment 1 of the present invention;

[0024] [Figure 10] 9 is a flowchart of step 906 according to the first embodiment of the present invention.

[0025] [Figure 11] 4 shows a flowchart of a method according to embodiment 3 of the present invention.

[0026] In the following, unless otherwise stated, identical reference signs denote identical or at least functionally equivalent features. DETAILED DESCRIPTION OF THE INVENTION

[0027] Video coding typically refers to the processing of a sequence of pictures to form a video or video sequence. The terms "picture," "frame," and "image" may be used synonymously in the field of video coding. Video coding, as used herein (or in this disclosure), refers to video encoding or video decoding. Video encoding is performed on the source side, e.g., by processing raw video pictures (e.g., by compression) to reduce the amount of data needed to represent the video picture for more efficient storage and / or transmission. Video decoding is performed on the destination side, typically involving the reverse process compared to the encoder to reconstruct the video picture. "Encoding" a video picture in the embodiments should be understood as "encoding" or "decoding" a video sequence. The combination of encoding and decoding components is also called a codec (encoding and decoding).

[0028] Each picture of a video sequence is typically partitioned into a set of non-overlapping blocks, and encoding is typically performed at the block level. In other words, at the encoder side, video is typically processed, i.e., encoded (compressed), at the block (also called picture block or video block) level, for example, by using spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to generate a predictive block, subtracting the predictive block from a current block (the block currently being / 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. At the decoder side, the reverse process compared to the encoder is applied to the coded or compressed block to reconstruct the current block for presentation. Furthermore, the encoder replicates the decoder processing loop, so that the encoder and decoder generate the same predictions (e.g., intra-prediction and inter-prediction) and / or reconstructions for processing, i.e., encoding, subsequent blocks.

[0029] The term "block" may be a part of a picture or a frame. Key terms are defined in this application as follows:

[0030] The current block is the block being processed. For example, in encoding, the current block is the block being currently coded, and in decoding, the current block is the block being decoded. If the currently processed block is a chroma component block, the currently processed block is called a current chroma block. The luma block corresponding to the current chroma block may be called a current luma block.

[0031] CTU is an abbreviation for coding tree unit. A picture contains multiple CTUs, where one CTU typically corresponds to one square picture area and contains luma samples and chroma samples within the picture area (or may contain only luma samples, or may contain only chroma samples). A CTU also contains syntax elements that indicate how to divide the CTU into at least one coding unit (CU) and how to decode each coding unit to obtain a reconstructed picture.

[0032] CU is an abbreviation for coding unit. A CU typically corresponds to an A×B rectangular region and includes A×B luma samples and corresponding chroma samples, where A is the width of the rectangle and B is the height of the rectangle, and A may be the same as or different from B. The values ​​of A and B are typically integer powers of 2, for example, 256, 128, 64, 32, 16, 8, and 4. The coding unit may be decoded through a decoding process to obtain a reconstructed picture of the A×B rectangular region. The decoding process typically includes performing processes such as prediction, inverse quantization, and inverse transform to generate a predicted picture and a residual. The reconstructed picture is obtained by convolving the predicted picture and the residual.

[0033] Hereinafter, embodiments of the encoder 20, the decoder 30, and the encoding system 10 will be described with reference to FIGS. 1A to 3. FIG.

[0034] 1A is a conceptual or schematic block diagram illustrating an example of an encoding system 10, e.g., video encoding system 10, that may utilize the techniques of the present disclosure. An encoder 20 (e.g., video encoder 20) and a decoder 30 (e.g., video decoder 30) of video encoding system 10 represent example devices that may be configured to perform intra prediction according to various examples described herein. As shown in FIG. 1A, encoding system 10 includes a source device 12 that is configured to provide coded data 13, e.g., coded pictures 13, to a destination device 14 that decodes the coded data 13.

[0035] The source device 12 includes an encoder 20 , and may additionally or optionally include a picture source 16 , a pre-processing unit 18 , for example a picture pre-processing unit 18 , and a communication interface or unit 22 .

[0036] The picture source 16 may include or be, for example, any type of picture capture device that captures real pictures and / or any type of device that generates pictures or comments (in screen content coding, any text on the screen is also considered part of the picture or image to be coded), such as a computer graphics processor that generates computer-animated pictures, or any type of other device that obtains and / or provides real pictures, computer-animated pictures (e.g., screen content or virtual reality (VR) pictures) and / or any combination thereof (e.g., augmented reality (AR) pictures).

[0037] A picture can be thought of as a two-dimensional array or matrix of samples with luma values. The samples in the array may also be called pixels (short for picture element) or pels. The number of samples in the horizontal and vertical directions (or axes) of the array or picture determines the size and / or resolution of the picture. For color representation, three color components are typically used. Specifically, a picture may be represented as or include three sample arrays. In an RBG format or color space, a picture includes corresponding red, green, and blue sample arrays. However, in video coding, each pixel is typically represented in a luma / chroma format or color space. For example, YCbCr includes a luma component denoted by Y (sometimes L is used instead) and two chroma components denoted by Cb and Cr. The luminance (abbreviated luma) component Y represents brightness or gray-level intensity (e.g., as in a grayscale picture). On the other hand, the two chromaticity (abbreviated as chroma) components Cb and Cr represent chromaticity or color information components. Thus, a picture in YCbCr format includes a luma sample array of luma sample values ​​(Y) and two chroma sample arrays of chroma values ​​(Cb and Cr). A picture in RGB format may be converted or transformed into YCbCr format, and vice versa, a process also known as color conversion or transformation. If a picture is monochrome, the picture may include only a luma sample array.

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

[0039] In contrast to pre-processing unit 18 and the processing performed by pre-processing unit 18 , pictures or picture data 17 (eg, video data 16 ) may also be referred to as raw pictures or raw picture data 17 .

[0040] The pre-processing unit 18 is configured to receive (raw) picture data 17 and pre-process the picture data 17 to obtain a pre-processed picture 19 or pre-processed picture data 19. For example, the pre-processing performed by the pre-processing unit 18 may include cropping, color format conversion (e.g., RGB to YCbCr conversion), color adjustment, and noise removal. It may be understood that the pre-processing unit 18 may be an optical component.

[0041] An encoder 20 (e.g., video encoder 20) is configured to receive pre-processed picture data 19 and provide encoded picture data 21 (details of which are further described below, e.g., with reference to FIG. 2 or FIG. 4). In one example, the encoder 20 may be configured to implement embodiments 1 to 3.

[0042] The communication interface 22 of the source device 12 may be configured to receive the coded picture data 21 and to transmit the coded picture data 21 to another device, for example the destination device 14 or any other device, for storage or direct reconstruction, or to process the coded picture data 21 accordingly before storing the coded data 13 and / or transmitting the coded data 13 to another device, where the other device is for example the destination device 14 or any other device for decoding or storage.

[0043] Destination device 14 includes a decoder 30 (eg, a video decoder 30 ), and may additionally, or optionally, include a communications interface or unit 28 , a post-processing unit 32 , and a display device 34 .

[0044] The communications interface 28 of the destination device 14 is configured to receive the coded picture data 21 or the coded data 13, for example directly from the source device 12 or from any other source, for example a storage device such as a coded picture data storage device.

[0045] Communications interface 22 and communications interface 28 may be configured to transmit or receive encoded picture data 21 or encoded data 13 via a direct communications link between source device 12 and destination device 14, or via any type of network. The direct communications link may be, for example, a direct wired or wireless connection, and the any type of network may be, for example, a wired or wireless network or any combination thereof, or any type of private or public network or any combination thereof.

[0046] The communications interface 22 may, for example, be arranged to package the coded picture data 21 in an appropriate format, for example packets, for transmission over a communications link or network.

[0047] The communications interface 28 forming the counterpart of the communications interface 22 may for example be arranged to unpackage the encoded data 13 to obtain the encoded picture data 21 .

[0048] Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces, as indicated by the arrow of encoded data 13 from source device 12 to destination device 14 in FIG. 1A, or may be configured as bidirectional communication interfaces, configured to send and receive messages, for example, to establish a connection, acknowledge, and exchange any other information related to the communication link and / or data transmission, such as encoded picture data transmission.

[0049] The decoder 30 is configured to receive the coded picture data 21 and to provide decoded picture data 31 or decoded pictures 31 (details are further described below, e.g., with reference to Figure 3 or Figure 5). In one example, the decoder 30 may be configured to implement embodiments 1 to 3.

[0050] The post-processor 32 of the destination device 14 is configured to post-process the decoded picture data 31 (also called reconstructed picture data), e.g., the decoded picture 131, to obtain post-processed picture data 33, such as a post-processed picture 33. The post-processing performed by the post-processing unit 32 may include, for example, color format conversion (e.g., YCbCr to RGB conversion), color correction, cropping, or resampling, or any other processing, e.g., to prepare the decoded picture data 31 for display by a display device 34.

[0051] A display device 34 of destination device 14 is configured to receive the post-processed picture data 33 for displaying the picture to a user, viewer, etc. The display device 34 may be or include any type of display, such as an internal or external display or monitor, that presents the reconstructed picture. For example, the display may include 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.

[0052] 1A depicts source device 12 and destination device 14 as separate devices, an embodiment of the devices may alternatively include both source device 12 and destination device 14, or the functionality of both source device 12 and destination device 14, i.e., source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such an embodiment, source device 12 or corresponding functionality and destination device 14 or corresponding functionality may be implemented using the same hardware and / or software, separate hardware and / or software, or any combination thereof.

[0053] As will be apparent to those skilled in the art based on the description, the functionality or (exact) division of functionality of different units within source device 12 and / or destination device 14 shown in FIG. 1A may vary depending on the actual device and application.

[0054] Encoder 20 (e.g., video encoder 20) and decoder 30 (e.g., video decoder 30) may be implemented as any one 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. If the techniques are implemented in part using software, an apparatus may store software instructions on a suitable non-transitory computer-readable storage medium and execute the instructions using hardware, such as one or more processors, to perform the techniques of this disclosure. Any of the foregoing (including hardware, software, a combination of hardware and software, etc.) may be considered as one or more processors. Video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, respectively, and either the encoder or decoder may be integrated into a combined encoder / decoder (codec) portion of a corresponding device.

[0055] Source device 12 may be referred to as a video encoder or video encoding device. Destination device 14 may be referred to as a video decoder or video decoding device. Source device 12 and destination device 14 may be examples of video encoders or video encoding devices.

[0056] Source device 12 and destination device 14 may include any of a wide range of devices, including any type of handheld or fixed device, such as a notebook or laptop computer, a mobile phone, a smartphone, a tablet or tablet computer, a camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device (such as a content service server or a content distribution server), a broadcast receiving device, or a broadcast transmitting device, and may or may not use any type of operating system.

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

[0058] 1A is merely an example, and the techniques herein are applicable to video encoding settings (e.g., video encoding or video decoding) that do not necessarily involve any data communication between an encoding device and a decoding device. In another example, data may be read from local memory, streamed over a network, etc. A video encoding device may encode data and store the data in memory, and / or a video decoding device may read data from memory and decode the data. In some examples, encoding and decoding are performed by devices that do not communicate with each other but simply encode data to memory and / or read data from memory and decode data.

[0059] It should be understood that for each of the above examples described with reference to video encoder 20, video decoder 30 may be configured to perform the inverse process. With respect to signaling syntax elements, video decoder 30 may be configured to receive and parse these syntax elements and decode the associated video data accordingly. In some examples, video encoder 20 may entropy encode the syntax elements into an encoded video bitstream. In these examples, video decoder 30 may parse these syntax elements and decode the associated video data accordingly.

[0060] 1B is an illustration of an example video encoding system 40 including the encoder 20 of FIG. 2 and / or the decoder 30 of FIG. 3, according to an example embodiment. System 40 may implement a combination of various techniques of the present application. In the illustrated implementation, video encoding system 40 may include an image device 41, a video encoder 20, a video decoder 30 (and / or a video encoder / decoder implemented by logic 47 of a processing unit 46), an antenna 42, one or more processors 43, one or more memories 44, and / or a display device 45.

[0061] As shown in the figure, imaging device 41, antenna 42, processing unit 46, logic circuitry 47, video encoder 20, video decoder 30, processor 43, memory 44, and / or display device 45 may be in communication with one another. As discussed, while video encoding system 40 is illustrated with video encoder 20 and video decoder 30, in other different examples, video encoding system 40 may include only video encoder 20 or only video decoder 30.

[0062] In some examples, as shown in the figures, video encoding system 40 may include antenna 42. For example, antenna 42 may be configured to transmit or receive encoded bitstreams of video data. Further, in some examples, video encoding system 40 may include display device 45. Display device 45 may be configured to present the video data. In some examples, as shown in the figures, logic circuitry 47 may be implemented by processing unit 46. Processing unit 46 may include application-specific integrated circuit (ASIC) logic, a graphics processor, a general-purpose processor, etc. Video encoding system 40 may also include optional processor 43. Optional processor 43 may also include application-specific integrated circuit (ASIC) logic, a graphics processor, a general-purpose processor, etc. In some examples, logic circuitry 47 may be implemented by hardware, e.g., dedicated video encoding hardware, and processor 43 may be implemented by general-purpose software, an operating system, etc. Furthermore, memory 44 may be any type of memory, such as volatile memory (e.g., Static Random Access Memory (SRAM) or Dynamic Random Access Memory (DRAM)) or non-volatile memory (e.g., flash memory). In a non-limiting example, memory 44 may be implemented by cache memory. In some examples, logic circuitry 47 may access memory 44 (e.g., for implementing a picture buffer). In other examples, logic circuitry 47 and / or processing unit 46 may include memory (e.g., cache) for implementing a picture buffer, etc.

[0063] In some examples, video encoder 20 implemented by logic circuitry may include a picture buffer (e.g., implemented by processing unit 46 or memory 44) and a graphics processing unit (e.g., implemented by processing unit 46). The graphics processing unit may be communicatively coupled to the picture buffer. The graphics processing unit may include video encoder 20 implemented by logic circuitry 47 to implement the various modules described with reference to FIG. 2 and / or any other encoder system or subsystem described herein. The logic circuitry may be configured to perform various operations described herein.

[0064] Video decoder 30 may be implemented in a manner similar to that implemented by logic circuitry 47 to implement various modules as discussed with respect to decoder 30 of FIG. 3 and / or any other decoder system or subsystem described herein. In some examples, video decoder 30 implemented by logic circuitry may include a picture buffer (e.g., implemented by processing unit 2820 or memory 44) and a graphics processing unit (e.g., implemented by processing unit 46). The graphics processing unit may be communicatively connected to the picture buffer. The graphics processing unit may include video decoder 30 implemented by logic circuitry 47 to implement various modules as discussed with reference to FIG. 3 and / or any other decoder system or subsystem described herein.

[0065] In some examples, antenna 42 of video encoding system 40 may be configured to receive an encoded bitstream of video data. As described, the encoded bitstream may include data, indicators, index values, mode selection data, etc., associated with the video frame encoding described herein, such as data associated with coding partitioning (e.g., transform coefficients or quantized transform coefficients, optional indicators (as described), and / or data defining the coding partitioning). Video encoding system 40 may further include video decoder 30 coupled to antenna 42 and configured to decode the encoded bitstream. Display device 45 is configured to present the video frames.

[0066] Encoder and encoding method

[0067] 2 is a schematic / conceptual block diagram of an example video encoder 20 configured to implement the techniques disclosed herein. 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 coding unit 270. The prediction processing unit 260 may include an inter prediction unit 244, an intra prediction processing 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 based on a hybrid video codec.

[0068] For example, the residual calculation unit 204, the transform processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy coding unit 270 form a forward signal path of the encoder 20. Meanwhile, for example, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, and the prediction processing unit 260 form a backward signal path of the encoder, and the backward signal path of the video encoder corresponds to the signal path of the decoder (see decoder 30 in FIG. 3 ).

[0069] Encoder 20 receives, for example via input 202, a picture 201 or a block 203 of picture 201, e.g., a picture in a sequence of pictures forming a video or a video sequence. Picture block 203 may also be called a current picture block or a coded picture block, and picture 201 may also be called a current picture or a coded picture (particularly in video coding, to distinguish the current picture from other pictures, e.g., previously coded and / or decoded pictures in the same video sequence, i.e., the video sequence that also contains the current picture).

[0070] Partitioning

[0071] In an embodiment, encoder 20 may include a partitioning unit (not shown in FIG. 2) configured to partition picture 201 into multiple blocks, such as block 203. Picture 201 is typically partitioned into multiple non-overlapping blocks. The partitioning unit may be configured to use the same block size for all pictures in a video sequence and a corresponding grid that defines the block size, or to vary the block size between pictures or subsets or groups of pictures, and partition each picture into corresponding blocks.

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

[0073] Similar to picture 201, block 203 is or may be considered to be a two-dimensional array or matrix of samples having luma values ​​(sample values), but the size of block 203 is smaller than the size of picture 201. In other words, block 203 may include, for example, one sample array (e.g., a luma array in the case of a monochrome picture 201), three sample arrays (e.g., one luma array and two chroma arrays in the case of a color picture), or any other number and / or type of arrays depending on the applied color format. The number of samples in the horizontal and vertical directions (or axes) of block 203 determine the size of block 203.

[0074] The encoder 20 shown in FIG. 2 is arranged to encode a picture 201 block by block, for example to encode and predict each block 203 .

[0075] Residual calculation

[0076] The residual calculation unit 204 is configured to calculate the residual block 205 based on the picture block 203 and the prediction block 265 (details regarding the prediction block 265 are provided further below), for example by subtracting sample values ​​of the prediction block 265 from sample values ​​of the picture block 203 sample by sample (pixel by pixel) to obtain the residual block 205 in the sample domain.

[0077] conversion

[0078] The transform processing unit 206 is configured to apply a transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), to the sample values ​​of the residual block 205 to obtain transform coefficients 207 in a transform domain. The transform coefficients 207 may also be referred to as transform residual coefficients and represent the residual block 205 in the transform domain.

[0079] The transform processing unit 206 may be configured to apply an integer approximation of a DCT / DST, such as the transform specified in HEVC / H.265. Compared to an orthogonal DCT transform, such an integer approximation is typically scaled by a specific factor. To maintain the level of the residual blocks processed using the forward and inverse transforms, an additional scaling factor is applied as part of the transform processing. The scaling factor is typically selected based on several constraints, such as the scaling factor being a square of a shift operation, the bit depth of the transform coefficients, and a trade-off between accuracy and implementation cost. For example, a specific scaling factor may be specified for the inverse transform, e.g., by the inverse transform processing unit 212 on the decoder 30 side (and the corresponding inverse transform, e.g., by the inverse transform processing unit 212 on the encoder 20 side), and a corresponding scaling factor may be specified for the forward transform by the transform processing unit 206 on the encoder 20 side.

[0080] quantization

[0081] The quantization unit 208 is configured to quantize the transform coefficients 207 to obtain quantized transform coefficients 209, for example, by applying scalar quantization or vector quantization. The quantized transform coefficients 209 may also be referred to as quantized residual coefficients 209. The quantization process can reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform coefficient may be truncated to an m-bit transform coefficient during quantization, where n is greater than m. The degree of quantization may be changed by adjusting a quantization parameter (QP). For example, in scalar quantization, different scaling may be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to finer quantization, and a larger quantization step size corresponds to coarser quantization. An appropriate quantization step size may be indicated by the quantization parameter (QP). For example, the quantization parameter may be an index into a predetermined set of appropriate quantization step sizes. For example, a smaller quantization parameter may correspond to finer quantization (smaller quantization step size), and a larger quantization parameter may correspond to coarser quantization (larger quantization step size), and vice versa. Quantization may include division by the quantization step size, e.g., corresponding quantization or inverse quantization performed by the inverse quantization unit 210, or multiplication by the quantization step size. Implementations according to some standards, such as HEVC, may use the quantization parameter to determine the quantization step size. Generally, the quantization step size may be calculated based on the quantization parameter using a fixed-point approximation of a formula involving division. Additional scaling factors for quantization and inverse quantization may be introduced to restore levels of the residual block that may change due to scaling used in the fixed-point approximation of the quantization step size and quantization parameter formulas. In one exemplary implementation, the scaling of the inverse transform and inverse quantization may be combined. Alternatively, customized quantization tables may be used and signaled from the encoder to the decoder, e.g., in the bitstream.Quantization is a lossy operation, and the loss increases with increasing quantization step size.

[0082] The inverse quantization unit 210 is configured to apply the inverse quantization of the quantization unit 208 to the quantized coefficients to obtain inverse quantized coefficients 211, e.g., by applying the inverse of the quantization scheme applied by the quantization unit 208, based on or using the same quantization step size as the quantization unit 208. The inverse quantized coefficients 211, also called inverse quantized residual coefficients 211, may correspond to the transform coefficients 207, but are typically not identical to the transform coefficients due to losses caused by quantization.

[0083] The inverse transform processing unit 212 is configured to apply an inverse transform of the transform applied by the transform processing unit 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), to obtain an inverse transformed block 213 in the sample domain. The inverse transformed block 213 may also be referred to as an inverse transformed dequantized block 213 or an inverse transformed residual block 213.

[0084] The reconstruction unit 214 (e.g., adder 214) is configured to add the inverse transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265, for example by adding the sample values ​​of the reconstructed residual block 213 and the sample values ​​of the prediction block 265, to obtain a reconstructed block 215 in the sample domain.

[0085] Optionally, a buffer unit 216 (or "buffer" 216 for short), for example of a line buffer 216, is configured to buffer or store the reconstructed block 215 and corresponding sample values, for example for intra-prediction. In other embodiments, the encoder may be configured to use the unfiltered reconstructed block and / or the corresponding sample values ​​stored in the buffer unit 216 for any type of estimation and / or prediction, for example intra-prediction.

[0086] For example, in an embodiment, encoder 20 may be configured such that buffer unit 216 is not only used to store reconstructed block 215 for intra prediction 254, but also for loop filter unit 220 (not shown in FIG. 2), and / or such that buffer unit 216 and decoded picture buffer unit 230 form one buffer, for example. In other embodiments, filtered block 221 and / or blocks or samples from decoded picture buffer 230 (blocks or samples not shown in FIG. 2) are used as input or basis for intra prediction 254.

[0087] Loop filter unit 220 (or “loop filter” 220 for short) is configured to filter reconstructed block 215 to obtain filtered block 221 to smooth pixel transitions or otherwise improve video quality. Loop filter unit 220 is intended to represent one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or another filter such as a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or a collaborative filter. Although loop filter unit 220 is shown in FIG. 2 as an in-loop filter, in another configuration, loop filter unit 220 may be implemented as a post-loop filter. Filtered block 221 may also be referred to as a filtered reconstructed block 221. Decoded picture buffer 230 may store the reconstructed coded block after loop filter unit 220 performs a filtering operation on the reconstructed coded block.

[0088] In an embodiment, encoder 20 (and correspondingly, loop filter unit 220) may be configured to output loop filter parameters (such as sample adaptive offset information), e.g., directly or after entropy coding performed by entropy coding unit 270 or any other entropy coding unit, so that, for example, decoder 30 can receive and apply the same loop filter parameters for decoding.

[0089] Decoded picture buffer (DPB) 230 may be a reference picture memory that stores reference picture data for use in encoding video data by video encoder 20. DPB 230 may be formed by any one of a variety of memory devices, such as dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), and resistive RAM (RRAM)), or other types of memory devices. DPB 230 and buffer 216 may be provided by the same memory device or separate memory devices. In an example, decoded picture buffer (DPB) 230 is configured to store filtered block 221. The decoded picture buffer 230 may be further configured to store other previous filtered blocks, e.g., previous reconstructed filtered block 221, of the same current picture or of a different picture, e.g., a previous reconstructed picture, and may provide a complete previous reconstruction, i.e., decoded picture (and corresponding reference blocks and samples), and / or a partial reconstructed current picture (and corresponding reference blocks and samples), e.g., for inter prediction. In an example, the decoded picture buffer (DPB) 230 is configured to store the reconstructed block 215 if the reconstructed block 215 was reconstructed without in-loop filtering.

[0090] The prediction processing unit 260, also called the block prediction processing unit 260, is configured to receive or obtain a picture block 203 (the current block 203 of the current picture 201) and reconstructed picture data, e.g., reference samples of the same (current) picture from the buffer 216 and / or reference picture data 231 of one or more previous decoded pictures from the decoded picture buffer 230, and to process such data for prediction, specifically to provide a prediction block 265, which may be an inter-prediction block 245 or an intra-prediction block 255.

[0091] The mode selection unit 262 may be configured to select a prediction mode (e.g., intra or inter prediction mode) and / or a corresponding prediction block 245 or 255 to be used as the prediction block 265 for calculation of the residual block 205 and for reconstruction of the reconstruction block 215.

[0092] In an embodiment, mode selection unit 262 may be configured to select a prediction mode (e.g., from prediction modes supported by prediction processing unit 260) that provides the best match, or in other words, the smallest residual (which means good compression for transmission or storage), or that provides the smallest signaling overhead (which means good compression for transmission or storage), or that considers or balances both. Mode selection unit 262 may be configured to determine the prediction mode based on rate-distortion optimization (RDO), i.e., to select a prediction mode that provides the smallest rate-distortion optimization or select a prediction mode whose associated rate-distortion at least satisfies a prediction mode selection criterion.

[0093] The prediction process performed by example encoder 20 (eg, using prediction processing unit 260) and the mode selection performed by example encoder 20 (eg, using mode selection unit 262) are described in further detail below.

[0094] As mentioned above, the encoder 20 is configured to determine a best or optimal prediction mode or select from a (predetermined) set of prediction modes, which may include, for example, intra-prediction modes and / or inter-prediction modes.

[0095] The intra-prediction mode set may include 35 different intra-prediction modes, or may include 67 different intra-prediction modes, or may include the intra-prediction modes defined in the H.266 standard.

[0096] The set of inter prediction modes depends on the available reference pictures (i.e., at least a portion of the decoded pictures stored in DBP230) and other inter prediction parameters, which may, for example, depend on whether the entire reference picture is used to search for the best-matching reference block or only a portion of the reference picture, for example a search window area around the area of ​​the current block, is used, and / or whether pixel interpolation, such as half-pixel and / or quarter-pixel interpolation, is applied.

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

[0098] Prediction processing unit 260 may be further configured to divide block 203 into smaller block partitions or sub-blocks, e.g., using quad-tree (QT) partitioning, binary-tree (BT) partitioning, triple-tree (TT) partitioning, or any combination thereof, iteratively, and perform prediction on each of the block partitions or sub-blocks. Mode selection includes selecting a tree structure for prediction block 203 and selecting a prediction mode to be applied to each of the block partitions or sub-blocks.

[0099] The inter prediction unit 244 may include a motion estimation (ME) unit (not shown in FIG. 2) and a motion compensation (MC) unit (not shown in FIG. 2). The motion estimation unit is configured to receive or obtain a picture block 203 (the current picture block 203 of the current picture 201) and a decoded picture 231, or at least one or more previous reconstructed blocks, such as one or more reconstructed blocks of another / different previous decoded picture 231, for motion estimation. For example, a video sequence may include the current picture and the previous decoded picture 31. In other words, the current picture and the previous decoded picture 31 may be part of or form a sequence of pictures that form the video sequence.

[0100] For example, the encoder 20 may be configured to select a reference block from multiple reference blocks of the same or different pictures among multiple other pictures, and provide to a motion estimation unit (not shown in FIG. 2 ) an offset (spatial offset) between the position (coordinates X and Y) of the reference picture and / or reference block and the position of the current block as an inter-prediction parameter. This offset is also called a motion vector (MV).

[0101] The motion compensation unit is configured to obtain, e.g., receive, inter prediction parameters and perform inter prediction based on or using the inter prediction parameters to obtain inter prediction block 245. Motion compensation performed by the motion compensation unit (not shown in FIG. 2) may include fetching or generating a prediction block (possibly by performing interpolation to sub-pixel precision) based on motion / block vectors determined through motion estimation. Interpolation filtering may generate additional pixel samples from known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode the picture block. Upon receiving the motion vector of the PU of the current picture block, motion compensation unit 246 may locate the prediction block pointed to by the motion vector within one of the reference picture lists. Motion compensation unit 246 may also generate syntax elements associated with the block and the video slice for use by video decoder 30 in decoding picture blocks of the video slice.

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

[0103] In an embodiment, the encoder 20 may be configured to select an intra prediction mode based on an optimization criterion, such as the minimum residual (e.g., the intra prediction mode that provides the predicted block 255 that is most similar to the current picture block 203) or the minimum rate distortion.

[0104] The intra prediction unit 254 is further configured to determine the intra-predicted block 255 based on, for example, intra prediction parameters for the selected intra prediction mode. In either case, after selecting the intra prediction mode for the block, the intra prediction unit 254 is further configured to provide the intra prediction parameters, i.e., information indicating the selected intra prediction mode for the block, to the entropy coding unit 270. In examples, the intra prediction unit 254 may be configured to perform any combination of the intra prediction techniques described below.

[0105] The entropy encoding unit 270 is configured to apply an entropy encoding algorithm or scheme (e.g., a variable length coding (VLC) scheme, a context adaptive VLC (CAVLC) scheme, an arithmetic coding scheme, context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy encoding method or technique) to one or all (or none) of the quantized residual coefficients 209, the inter-prediction parameters, the intra-prediction parameters, and / or the loop filter parameters to obtain coded picture data 21, which may be output via an output 272, for example, in the form of a coded bitstream 21. The coded bitstream may be transmitted to the video decoder 30 or archived for later transmission or retrieval by the video decoder 30. Entropy encoding unit 270 may further be configured to entropy encode other syntax elements of the current video slice being encoded.

[0106] Other structural variations of the video encoder 20 can be used to encode the video stream. For example, a non-transform-based encoder 20 may directly quantize the residual signal for some blocks or frames without having a transform processing unit 206. In another implementation, the encoder 20 may have the quantization unit 208 and the inverse quantization unit 210 combined into a single unit.

[0107] 3 shows an example of a video decoder 30 configured to implement the techniques of the present application. The video decoder 30 is configured to receive coded picture data (e.g., coded bitstream) 21, for example, coded by encoder 20, to obtain a decoded picture 231. In the decoding process, the video decoder 30 receives video data from the video encoder 20, for example, a coded video bitstream representing picture blocks of coded video slices and associated syntax elements.

[0108] 3, decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., adder 314), a buffer 316, a loop filter 320, a decoded picture buffer 330, and a prediction processing unit 360. Prediction processing unit 360 may include an inter prediction unit 344, an intra prediction unit 354, and a mode selection unit 362. In some examples, video decoder 30 may perform a decoding path that is generally inverse to the encoding path described with reference to video encoder 20 of FIG.

[0109] Entropy decoding unit 304 is configured to perform entropy decoding on coded picture data 21 to obtain, e.g., quantized coefficients 309, and / or decoded coding parameters (not shown in FIG. 3), e.g., any one or all of (decoded) inter-prediction parameters, intra-prediction parameters, loop filter parameters, and / or other syntax elements. Entropy decoding unit 304 is further configured to forward the inter-prediction parameters, intra-prediction parameters, and / or other syntax elements to prediction processing unit 360. Video decoder 30 may receive video slice-level and / or video block-level syntax elements.

[0110] The inverse quantization unit 310 may have the same function as the inverse quantization unit 110, 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.

[0111] Prediction processing unit 360 may include an inter prediction unit 344 and an intra prediction unit 354. The inter prediction unit 344 may be functionally similar to the inter prediction unit 244, and the intra prediction unit 354 may be functionally similar to the intra prediction unit 254. Prediction processing unit 360 is typically configured to perform block prediction and / or obtain a prediction block 365 from the coded data 21, and to receive or obtain (explicitly or implicitly) prediction-related parameters and / or information regarding a selected prediction mode, for example, from entropy decoding unit 304.

[0112] When a video slice is coded as an intra-coded (I) slice, intra prediction unit 354 of prediction processing unit 360 is configured to generate prediction block 365 for a picture block of the current video slice based on the signaled intra prediction mode and data from a previous decoded block of the current frame or picture. When a video frame is coded as an inter-coded (i.e., B or P) slice, inter prediction unit 344 (e.g., a motion compensation unit) of prediction processing unit 360 is configured to generate prediction block 365 for a video block of the current video slice based on the motion vector and other syntax elements received from entropy decoding unit 304. In inter prediction, the prediction block may be generated from one of the reference pictures in one of the reference picture lists. Video decoder 30 may construct the reference frame lists, List 0 and List 1, based on the reference pictures stored in DPB 330 using a specified construction technique.

[0113] Prediction processing unit 360 is configured to determine prediction information for video blocks of the current video slice by parsing the motion vectors and other syntax elements, and to use the prediction information to generate a predictive block for the current video block being decoded. For example, prediction processing unit 360 uses some of the received syntax elements to determine the prediction mode (e.g., intra- or inter-prediction) used to encode the video blocks of the video slice, the inter-prediction slice type (e.g., B slice, P slice, or GPB slice), configuration information for one or more of the reference picture list of the slice, the motion vectors of each inter-coded video block of the slice, the inter-prediction state of each inter-coded video block of the slice, and other information for decoding the video blocks in the current video slice.

[0114] Inverse quantization unit 310 may be configured to inverse quantize (i.e., dequantize) quantized transform coefficients provided in the bitstream and decoded by entropy decoding unit 304. The inverse quantization process may include using quantization parameters calculated by video encoder 20 to determine, for each video block in a video slice, the degree of quantization to be applied, and similarly the degree of inverse quantization to be applied.

[0115] Inverse transform processing unit 312 is configured to apply an inverse transform (eg, an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficients to produce residual blocks in the pixel domain.

[0116] 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, for example by adding the sample values ​​of the reconstructed residual block 313 and the sample values ​​of the prediction block 365, to obtain the reconstructed block 315 in the sample domain.

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

[0118] The decoded video blocks 321 in a given frame or picture are then stored in a decoded picture buffer 330, which stores reference pictures used for subsequent motion compensation.

[0119] The decoder 30 is arranged to output the decoded pictures 31 via an output 332, for example for presentation to or viewing by a user.

[0120] Other variations of the video decoder 30 may be configured to decode compressed bitstreams. For example, the decoder 30 may generate an output video stream without having a loop filter unit 320. For example, a non-transform-based decoder 30 may directly inverse quantize the residual signal for some blocks or frames without having an inverse transform processing unit 312. In another implementation, the video decoder 30 may have the inverse quantization unit 310 and the inverse transform processing unit 312 combined into a single unit.

[0121] 4 is a schematic structural diagram of a video encoding device 400 (e.g., video encoding device 400 or video decoding device 400) according to an embodiment of the present invention. Video encoding device 400 is suitable for implementing embodiments described herein. In an embodiment, video encoding device 400 may be a video decoder (e.g., video decoder 30 of FIG. 1A) or a video encoder (e.g., video encoder 20 of FIG. 1A). In another embodiment, video encoding device 400 may be one or more components of video decoder 30 of FIG. 1A or video encoder 20 of FIG. 1A.

[0122] The video encoding device 400 includes an ingress port 410 and a receiver unit (Rx) 420 for receiving data, a processor, logic unit, or central processing unit (CPU) 430 for processing the data, a transmitter unit (Tx) 440 and an egress port 450 for transmitting the data, and a memory 460 for storing the data. The video encoding device 400 may also include optical-to-electrical and electro-optical (EO) components for egress or ingress of optical or electrical signals connected to the ingress port 410, the receiver unit 420, the transmitter unit 440, and the egress port 450.

[0123] The processor 430 is implemented in hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (e.g., multi-core processors), FPGAs, ASICs, and DSPs. The processor 430 communicates with the ingress port 410, the receiver unit 420, the transmitter unit 440, the egress port 450, and the memory 460. The processor 430 includes an encoding module 470 (e.g., the encoding module 470 or the decoding module 470). The encoding / decoding module 470 implements the embodiments disclosed above. For example, the encoding / decoding module 470 performs, processes, or provides various encoding operations. Thus, the encoding / decoding module 470 provides substantial improvements to the functionality of the video encoding device 400 and affects the transformation of the video encoding device 400 into different states. Alternatively, the encoding / decoding module 470 is implemented as instructions stored in the memory 460 and executed by the processor 430.

[0124] Memory 460 may include one or more disks, tape drives, and solid state drives, and may be used to store programs when they are selected for execution and as overflow data storage for storing instructions and data read during the execution of programs. 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).

[0125] 5 is a simplified block diagram of an apparatus 500 that may be used as one or both of source device 12 and destination device 14 of FIG. 1A according to an example embodiment. Apparatus 500 may implement the techniques of the present application. Apparatus 500 that implements picture partitioning may be in the form of a computing system including multiple computing devices, or in the form of a single computing device such as a mobile phone, tablet computer, laptop computer, or desktop computer.

[0126] Processor 502 of device 500 may be a central processing unit. Alternatively, processor 502 may be any other type of device or devices, existing or developed in the future, that can control or process information. As shown, implementations of the disclosure may be performed with a single processor, such as processor 502, although benefits in speed and efficiency may be achieved using more than one processor.

[0127] In implementations, the memory 504 of the device 500 may be a read-only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device may be used as the memory 504. The memory 504 may include code and data 506 accessed by the processor 502 using a bus 512. The memory 504 may further include an operating system 508 and application programs 510. The application programs 510 include at least one program that enables the processor 502 to perform methods described herein. For example, the application programs 510 may include applications 1-N, which further include a video encoding application that performs methods described herein. The device 500 may also include additional memory in the form of secondary storage 514. The secondary storage 514 may be, for example, a memory card used with a mobile computing device. Because a video communication session may contain a large amount of information, this information may be stored in whole or in part in the secondary storage 514 and loaded into the memory 504 as needed for processing.

[0128] Device 500 may also include one or more output devices, such as a display 518. In an example, display 518 may be a touch-sensitive display that combines a display with touch-sensitive elements operative to sense touch input. Display 518 may be connected to processor 502 using bus 512. Other output devices that enable a user to program or otherwise use device 500 may be provided in addition to or as an alternative to display 518. When an output device is or includes a display, the display can be implemented in different 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.

[0129] Device 500 may also include or be connected to picture sensing device 520. Picture sensing device 520 may be, for example, a camera or any other existing or future developed picture sensing device 520 capable of sensing a picture. The picture may be, for example, a picture of a user executing device 500. Picture sensing device 520 may be positioned directly facing the user executing device 500. In an example, the position and optical axis of picture sensing device 520 may be configured such that the field of view of picture sensing device 520 includes an area proximate to display 518, and display 518 is visible from that area.

[0130] Device 500 may also include or communicate with audio sensing device 522, such as a microphone or any other existing or future developed audio sensing device capable of sensing audio near device 500. Audio sensing device 522 may be positioned directly opposite a user running device 500 and may be configured to receive audio, such as a voice or other sound, generated by the user running device 500.

[0131] While FIG. 5 depicts the processor 502 and memory 504 of device 500 as integrated into a single unit, other configurations may be utilized. Execution of processor 502 may be distributed among multiple machines (each machine having one or more processors), which may be directly connected or distributed over a local area or another network. Memory 504 may be distributed across multiple machines, such as a network-based memory or memory among multiple machines on which device 500 executes. While shown here as a single bus, bus 512 of device 500 may include multiple buses. Furthermore, secondary storage 514 may be directly connected to other components of device 500 or accessible over a network, and may include a single integrated unit, such as a memory card, or multiple units, such as multiple memory cards. Device 500 may therefore be implemented in a wide variety of configurations.

[0132] As mentioned above in this application, in addition to including a luma (Y) component, color video also includes chroma components (U, V). Therefore, in addition to encoding the luma component, the chroma components also need to be encoded. According to different methods of sampling the luma and chroma components in color video, there are usually YUV4:4:4, YUV4:2:2, and YUV4:2:0. As shown in Figure 6, x represents a sample of the luma component, and ◯ represents a sample of the chroma component. The 4:4:4 format indicates that the chroma components are not downsampled. The 4:2:2 format indicates that 2:1 horizontal downsampling is performed on the chroma components compared to the luma component, and no vertical downsampling is performed on the chroma components. For every two U or V samples, each row contains four Y samples. The 4:2:0 format indicates that a 2:1 horizontal downsampling is performed on the chroma components and a 2:1 vertical downsampling is performed on the chroma components compared to the luma components.

[0133] A video decoder may be configured to partition video blocks according to three different partition structures (QT, BT, and TT) and using five different partition types allowed at each depth. As shown in Figures 7A-7E, the partition types include quadtree partitioning (QT partition structure), horizontal binary tree partitioning (BT partition structure), vertical binary tree partitioning (BT partition structure), horizontal center-edge ternary tree partitioning (TT partition structure), and vertical center-edge ternary tree partitioning (TT partition structure).

[0134] The five division types are defined as follows: Note that a square can be considered as a special case of a rectangle.

[0135] Quad-tree (QT) partitioning: A block is further divided into four rectangular blocks of the same size. Figure 7A shows an example of quad-tree partitioning. According to the quad-tree QT-based CTU partitioning method, a CTU is used as the root node of the quad-tree. A CTU is recursively partitioned into several leaf nodes based on the quad-tree partitioning mode. One node corresponds to one picture region. If a node is not partitioned, the node is called a leaf node, and the picture region corresponding to the node becomes a CU. If a node is partitioned, the picture region corresponding to the node is partitioned into four picture regions of the same size (the lengths and widths of the four regions are half the length and width of the partitioned region, respectively), and each region corresponds to one node. Whether these nodes are further partitioned needs to be determined separately. Whether a node should be partitioned is indicated by a split flag split_cu_flag in the bitstream corresponding to the node. The quadtree depth (qtDepth) of the root node is 0, and the quadtree depth of a child node is the quadtree depth of the parent node + 1. For simplicity, in this application, the size and shape of a node are the size and shape of the picture area corresponding to the node. That is, the node is a rectangular area in the picture. A node obtained by splitting a node in the coding tree may be called the child node of the node, or simply called a child node.

[0136] More specifically, a 64x64 CTU node (with a quadtree depth of 0) may not be split and become a 64x64 CU based on the split_cu_flag corresponding to the CTU node, or may be split into four 32x32 nodes (with a quadtree depth of 1). Each of the four 32x32 nodes may or may not be further split based on the split_cu_flag corresponding to the node. If the 32x32 node continues to be split, four 16x16 nodes (with a quadtree depth of 2) are generated. The remaining nodes may be similarly deduced until the node is no longer further split. In this way, one CTU is divided into one group of CUs. The minimum CU size is specified in the SPS. For example, 8x8 is the minimum CU size. In the recursive partitioning process described above, if the size of a node is equal to the minimum CU size, the node is not further split by default, and the split flag of the node does not need to be included in the bitstream.

[0137] After parsing reveals that a node is a leaf node and that the leaf node is a CU, the coding information corresponding to the CU (including information such as a prediction mode and the transform coefficients of the CU, for example, the syntax structure coding_unit() in H.266) is further parsed. Then, decoding processes such as prediction, inverse quantization, inverse transform, and loop filtering are performed on the CU based on the coding information to generate a reconstructed image corresponding to the CU. In a quadtree (QT) structure, the CTU can be divided into groups of CUs of appropriate sizes based on local picture features. For example, flat regions are divided into larger CUs, while texture-rich regions are divided into smaller CUs.

[0138] The partitioning mode of a CTU into groups of CUs corresponds to a coding tree. The specific coding tree to be used by a CTU is usually determined using the encoder's rate distortion optimization (RDO) technique. The encoder tries multiple CTU partitioning modes, each corresponding to a rate distortion cost (RD cost). The encoder compares the RD costs of the tried partitioning modes and finds the partitioning mode with the smallest RD cost as the optimal partitioning mode for the CTU for actual encoding. To ensure that the CTU partitioning mode can be correctly identified by the decoder, all CTU partitioning modes tried by the encoder must comply with the partitioning rules specified by the decoder.

[0139] Vertical binary tree (BT) partitioning: A block is vertically partitioned into two rectangular blocks of the same size. Figure 7B is an example of vertical binary tree partitioning.

[0140] Horizontal binary tree partitioning: A block is divided horizontally into two rectangular blocks of the same size. Figure 7C is an example of horizontal binary tree partitioning.

[0141] Vertical Center-Edge Ternary Tree (TT) Partitioning: A block is divided vertically into three rectangular blocks, such that the two edge blocks are of the same size and the size of the center block is the sum of the sizes of the two edge blocks. Figure 7D is an example of a vertical center-edge ternary tree partitioning.

[0142] Horizontal center-edge ternary tree partitioning: A block is partitioned horizontally into three rectangular blocks, such that the two edge blocks are the same size and the size of the center block is the sum of the sizes of the two edge blocks. Figure 7E is an example of horizontal center-edge ternary tree partitioning.

[0143] The specific splitting methods in Figures 7B to 7E are similar to those described in Figure 7A, and the details will not be described again here. Furthermore, a splitting mode that cascades QT and BT / TT may be used, which is abbreviated as QT-BTT. That is, a node in a level-1 coding tree can be split into child nodes only through QT, and the leaf node of the level-1 coding tree is the root node of the level-2 coding tree. A node in a level-2 coding tree may be split into child nodes using one of the following four splitting modes: horizontal bisection, vertical bisection, horizontal trisection, and vertical trisection. The leaf node of the level-2 coding tree is a coding unit. Specifically, the binary tree splitting and quadtree splitting are performed in a cascading manner, which may be abbreviated as QTBT splitting mode. For example, as shown in Figure 8, a CTU can first be split through QT, and the QT leaf node can continue to be split through BT. In the right part of Figure 8, each endpoint represents one node. A node connected to four solid lines represents a quad-tree split, and a node connected to two dashed lines represents a binary tree split. Nodes obtained after splitting may be called child nodes of the node, or simply referred to as child nodes. Among the child nodes, a to m are 13 leaf nodes, each representing one CU. In the binary tree nodes, 1 represents a vertical split, and 0 represents a horizontal split. As shown in the left part of FIG. 8, the CTU is split into 13 CUs: a to m. In the QTBT split mode, each CU has a QT depth (Quad-tree depth) and a BT depth (Binary tree depth). The QT depth represents the QT depth of the QT leaf node to which the CU belongs, and the BT depth represents the BT depth of the BT leaf node to which the CU belongs. For example, in Figure 8, the QT depth of a and b is 1, the BT depth of a and b is 2, the QT depth of c, d, and e is 1, the BT depth of c, d, and e is 1, the QT depth of f, k, and l is 2, the BT depth of f, k, and l is 1, the QT depth of i and j is 2, the BT depth of i and j is 0, the QT depth of g and h is 2, the BT depth of g and h is 2, the QT depth of m is 1, and the BT depth of m is 0. If a CTU is divided into only one CU, the QT depth of the CU is 0 and the BT depth of the CU is 0.

[0144] For a block associated with a particular depth, the encoder 20 determines which partition type (including no further partitioning) to use and signals the determined partition type explicitly or implicitly (e.g., the partition type may be derived from a predetermined rule) to the decoder 30. The encoder 20 may determine the partition type to be used based on a rate-distortion cost for exploring different partition types for the block.

[0145] When 2xM chroma blocks, especially 2x2, 2x4, or 2x8 chroma blocks, are generated by splitting a node, the chroma encoding and decoding efficiency is relatively low and the processing cost of a hardware decoder is relatively high. This is undesirable for implementing a hardware decoder. When the chroma blocks of the current node are not further split, in this embodiment of the present application, only the luma blocks of the current node may be split, thereby improving the encoding and decoding efficiency, reducing the maximum codec throughput, and facilitating codec implementation. Specifically, in this embodiment of the present application, when a child node generated by splitting a node using a splitting mode includes a chroma block whose side length is equal to the first threshold (or includes a chroma block whose side length is shorter than the second threshold), the luma blocks included in the node are split using this splitting mode, and the chroma blocks included in the node are not further split. This mode can avoid generating chroma blocks whose side length is equal to the first threshold (or shorter than the second threshold). In a specific implementation, the first threshold may be 2, and the second threshold may be 4. The following provides a detailed description with reference to embodiments 1 to 3. In this embodiment of the present application, a description is provided using the video data format of YUV4:2:0, and a similar method may be used for YUV4:2:2 data.

[0146] The Intra Block Copy (IBC) coding tool is adopted in the HEVC extended standard SCC and is mainly used to improve the coding efficiency of screen content video. The IBC mode is a block-level coding mode. On the encoder side, a block matching (BM) method is used to find the optimal block vector or motion vector for each CU. The motion vector is mainly used here to represent the displacement from a current block to a reference block, and is also called a displacement vector. The reference block is a reconstructed block within the current picture. The IBC mode may be considered as a third prediction mode other than the intra prediction mode or the inter prediction mode. To save storage space and reduce decoder complexity, the IBC mode in VTM4 allows only the reconstructed part of a certain region of the current CTU to be used for prediction.

[0147] In VTM, at the CU level, a flag is used to indicate whether the IBC mode is used for the current CU. The IBC mode is classified as IBC AMVP mode, IBC skip mode, or IBC merge mode.

[0148] Embodiment 1 FIG. 9 is a flowchart of a method 900 according to embodiment 1 of the present invention.

[0149] Step 901: Determine whether the current node needs to be split, where the current node includes a luma block and a chroma block.

[0150] If the current node is not further split into child nodes, the current node is a coding unit (CU) and step 910 is performed to obtain information about the coding unit through parsing, or if the current node needs to be split, step 902 is performed.

[0151] The first embodiment of the present invention may be implemented by a video decoding device, specifically the device illustrated in any one of FIGS.

[0152] The first embodiment of the present invention may alternatively be implemented by a video encoding device, in particular the device illustrated in any one of FIGS.

[0153] When embodiment 1 is implemented by a video decoding device, step 902 is: the video decoding device parses the bitstream to determine the partitioning mode of the current node. The partitioning mode of the current node may be at least one of 4-way (QT), horizontal 2-way (horizontal BT), horizontal 3-way (horizontal TT), vertical 2-way (Vertical BT), and vertical 3-way (Vertical TT), or may be another partitioning mode. This is not limited in this embodiment of the present invention. Information about the partitioning mode of the current node is usually transmitted in the bitstream, and the partitioning mode of the current node can be obtained by parsing the corresponding syntax element in the bitstream.

[0154] When embodiment 1 is implemented by a video encoding device, step 902 is: determine how to split the current node.

[0155] Step 904: Determine whether the chroma blocks of the current node need to be split based on the split mode of the current node and the size of the current node. If the chroma blocks of the current node do not need to be split further, execute step 906. Otherwise, if the chroma blocks of the current node need to be split, execute step 908.

[0156] Specifically, in the implementation, it may be determined whether a chroma block whose side length is equal to the first threshold (or whose side length is shorter than the second threshold) is generated by splitting the current node based on the split mode of the current node. If it is determined that a child node generated by splitting the current node includes a chroma block whose side length is equal to the first threshold (or includes a chroma block whose side length is shorter than the second threshold), the chroma block of the current node is not further split. For example, the first threshold may be 2, and the second threshold may be 4.

[0157] In this embodiment of the present invention, a chroma block whose side length is the first threshold is a chroma block whose width or height is the first threshold.

[0158] In another implementation, for example, when any one of conditions 1 to 5 is true, it may be determined that the chroma block of the current node will not be further divided, and otherwise it may be determined that the chroma block of the current node needs to be divided. Condition 1: The width of the current node is equal to twice the second threshold, and the split mode of the current node is vertical bisection. Condition 2: The height of the current node is equal to twice the second threshold, and the split mode of the current node is horizontal bisection. Condition 3: The width of the current node is equal to four times the second threshold, and the division mode of the current node is vertical-thirds. Condition 4: The height of the current node is equal to four times the second threshold, and the division mode of the current node is horizontally divided into three; or Condition 5: The width of the current node is equal to twice the second threshold, and the division mode of the current node is 4-division.

[0159] Typically, the width of the current node is the width of the luma block corresponding to the current node, and the height of the current node is the height of the luma block corresponding to the current node. In a particular implementation, for example, the second threshold may be 4.

[0160] In a third implementation, whether a chroma block having a width equal to the first threshold (or a chroma block having a width narrower than the second threshold) is generated by splitting the current node may be determined based on the split mode of the current node. If it is determined that a child node generated by splitting the current node includes a chroma block having a width equal to the first threshold (or a chroma block having a width narrower than the second threshold), the chroma block of the current node is not further split. For example, the first threshold may be 2, and the second threshold may be 4.

[0161] In a fourth implementation, it may be determined whether a chroma block having fewer chroma samples than a third threshold will be generated by splitting the current node based on the splitting mode of the current node. If it is determined that a child node generated by splitting the current node includes a chroma block having fewer chroma samples than the third threshold, the chroma block of the current node is not further split. For example, the third threshold may be 16. In this case, chroma blocks having fewer chroma samples than 16 include, but are not limited to, 2x2 chroma blocks, 2x4 chroma blocks, and 4x2 chroma blocks. The third threshold may be 8. In this case, chroma blocks having fewer chroma samples than 8 include, but are not limited to, 2x2 chroma blocks.

[0162] Specifically, if either Condition 1 or Condition 2 is true, it may be determined that a chroma block having a number of chroma samples less than the third threshold is generated by splitting the current node based on the split mode of the current node. Otherwise, it may be determined that a chroma block having a number of chroma samples less than the third threshold is not generated by splitting the current node based on the split mode of the current node. Condition 1: The product of the width and height of the current node is less than 128, and the division mode of the current node is vertical halving or horizontal halving; or Condition 2: The product of the width and height of the current node is less than 256, and the division mode of the current node is vertical 3-division, horizontal 3-division, or 4-division.

[0163] Specifically, in another implementation, if either Condition 3 or Condition 4 is true, it may be determined that a chroma block having a number of chroma samples less than the third threshold is generated by splitting the current node based on the splitting mode of the current node. Otherwise, it may be determined that a chroma block having a number of chroma samples less than the third threshold is not generated by splitting the current node based on the splitting mode of the current node. Condition 3: The product of the width and height of the current node is equal to 64, and the split mode of the current node is vertical 2-split, horizontal 2-split, 4-split, horizontal 3-split, or vertical 3-split; or Condition 4: The product of the width and height of the current node is equal to 128, and the division mode of the current node is vertical 3-division or horizontal 3-division.

[0164] In a fifth implementation, it may be determined whether a chroma block whose height is equal to the first threshold (or whose height is lower than the second threshold) is generated by splitting the current node based on the split mode of the current node. If it is determined that a child node generated by splitting the current node includes a chroma block whose height is equal to the first threshold (or whose height is lower than the second threshold), the chroma block of the current node is not further split. For example, the first threshold may be 2, and the second threshold may be 4.

[0165] Step 906: Based on the division mode of the current node, divide the luma block of the current node to obtain child nodes of the current node (which may also be referred to as child nodes of the luma block, or simply referred to as luma nodes). Each child node includes only a luma block. The chroma block of the current node is not further divided, resulting in a coding unit including only a chroma block.

[0166] Optionally, as shown in Figure 10, step 906 may further include step 9062: parsing the luma block of the current node to obtain prediction information and residual information for each of the sub-regions in the luma block of the current node, where each sub-region corresponds to one child node.

[0167] Specifically, step 9062 may be performed using any one of the following methods:

[0168] Method 1: By default, each child node of a luma block is not further divided (i.e., each luma node is a coding unit, and one child node of a luma block corresponds to one coding unit containing only a luma block). The coding unit data of the child nodes of the luma block is parsed in order to obtain prediction information and residual information for each luma block. The luma block of a luma node is a sub-region within the luma block of the current node, and the luma block of a luma node constitutes the luma block of the current node.

[0169] Method 2: Determine whether the child nodes of the luma block need to continue to be further divided in order. When the child node needs to be further divided, parse the division mode of the child node and the corresponding coding unit data. More specifically, if the luma node is not further divided, parse the coding unit data corresponding to the luma node to obtain prediction information and residual information corresponding to the luma block of the luma node. Alternatively, if the luma node continues to be divided, continue to determine whether the child nodes of the luma node (note that the child node still only includes luma blocks) need to be divided until the prediction information and residual information of each sub-region of the luma block of the current node is determined.

[0170] The prediction information includes, but is not limited to, a prediction mode (indicating an intra prediction mode or an inter prediction mode), an intra prediction mode, motion information, etc. The intra prediction mode of a luma block may be one of a planar mode, a DC mode, an angular mode, and a chroma derived mode (DM). The motion information may include information such as a prediction direction (forward, backward, or both), a reference index, and / or a motion vector.

[0171] The residual information includes coded block flags (CBFs), transform coefficients, and / or transform type (eg, DCT-2, DCT-7, or DCT-8), etc.

[0172] Optionally, as shown in FIG. 10, step 906 may further include step 9064: obtaining prediction information and / or residual information of a chroma block.

[0173] Specifically, step 9064 may include step 90642 and step 90644. Step 90642 may be step 90642A or step 90642B.

[0174] Step 90642A specifically includes:

[0175] The prediction mode of the preset position of the luma block of the current node is obtained as the prediction mode of the chroma block of the current node. The position of the upper left corner of the luma block of the current node may be represented as (x0, y0), and the size is W×H. In this case, the preset position may include, but is not limited to, the upper left corner of the luma block, the lower right corner (x0+W-1, y0+H-1), the center (x0+W / 2, y0+H / 2), (x0+W / 2, 0), or (0, y0+H / 2), etc. The prediction mode indicates whether intra prediction or inter prediction is performed on the pixel at the preset position, for example, information indicated by the syntax element pred_mode_flag in HEVC. For example, in VTM, whether the prediction mode of the preset position is IBC mode may be determined based on information indicated by the syntax element pred_mode_ibc_flag.

[0176] If the prediction mode of the preset position is inter prediction, one of the following methods is used to determine the prediction mode of the chroma block.

[0177] Method 1: Perform inter prediction on the chroma block to obtain motion information of a preset position as the motion information of the chroma block.

[0178] Method 2: Perform inter prediction on the chroma block, divide the chroma block into chroma prediction sub-blocks (where the size of the chroma prediction sub-block is, for example, 2 chroma samples in width and 2 chroma samples in height), and obtain the motion information of the chroma prediction sub-blocks in the following manner:

[0179] When inter prediction is performed on a luma block at a luma picture position corresponding to a chroma prediction sub-block, the motion information of the luma picture position corresponding to the chroma prediction sub-block is used as the motion information of the chroma prediction sub-block. Otherwise, the motion information of the preset position is obtained as the motion information of the chroma prediction sub-block.

[0180] In a YUV 4:2:0 picture, the coordinates of a chroma prediction sub-block in a chroma picture are denoted as (xC, yC), where the coordinates of the luma picture position corresponding to the chroma prediction sub-block are (xC<<1, yC<<1).

[0181] Method 3: Parse the flag pred_mode_flag to determine whether intra prediction or inter prediction is performed on the chroma block. If intra prediction is performed on the chroma block, parse the intra prediction mode from the bitstream as the intra prediction mode of the chroma block. Alternatively, if inter prediction is performed on the chroma block, obtain the motion information of the preset position as the motion information of the chroma block.

[0182] Method 4: Parse the flag pred_mode_flag to determine whether intra prediction or inter prediction is performed on the chroma block. If intra prediction is performed on the chroma block, parse the intra prediction mode from the bitstream as the intra prediction mode of the chroma block. Here, the intra prediction mode may be one of a cross-component linear model mode and a DM mode, and the luma intra prediction mode corresponding to the DM mode is set to the planar mode. Alternatively, if inter prediction is performed on the chroma block, divide the chroma block into chroma prediction sub-blocks. Here, motion information of the chroma prediction sub-blocks is obtained in the following manner.

[0183] When inter prediction is performed on a luma block at a luma picture position corresponding to a chroma prediction sub-block, the motion information of the luma picture position corresponding to the chroma prediction sub-block is used as the motion information of the chroma prediction sub-block. Otherwise, the motion information of the preset position is obtained as the motion information of the chroma prediction sub-block.

[0184] The context model used to parse the flag pred_mode_flag is, for example, the preset model with model number 2.

[0185] If the prediction mode of the preset position is intra prediction, intra prediction is performed on the chroma block, and the intra prediction mode is parsed from the bitstream as the intra prediction mode of the chroma block. Alternatively, the intra prediction mode of the chroma block is directly determined to be one of DC mode, planar mode, angular mode, cross-component linear model mode, or DM mode.

[0186] If the prediction mode of the preset position is the IBC mode, the chroma block is predicted in the IBC mode to obtain the displacement vector information of the preset position as the displacement vector information of the chroma block. Alternatively, if the prediction mode of the preset position is the IBC mode, the prediction mode of the chroma block is determined based on the flag pred_mode_ibc_flag: 1) If pred_mode_ibc_flag is 1, IBC mode is used for the chroma block. More specifically, the method for predicting IBC for a chroma block may be the method in VTM4.0. That is, the chroma block is divided into 2x2 sub-blocks, and the displacement vector of each sub-block is equal to the displacement vector of the luma region corresponding to the sub-block. Or, 2) If pred_mode_ibc_flag is 0, then intra or inter prediction mode is used for the chroma blocks.

[0187] When intra-prediction modes are used, syntax elements are parsed from the bitstream to determine the chroma intra-prediction mode. Alternatively, it is directly determined that the intra-prediction mode of a chroma block belongs to a chroma intra-prediction mode set. The chroma intra-prediction mode set includes DC mode, planar mode, angular mode, cross-component linear model, and DM mode.

[0188] When an inter prediction mode is used, the motion information of the preset position may be obtained as the motion information of the chroma block.

[0189] It should be noted that when pred_mode_ibc_flag does not exist in the bitstream, if the type of the picture where the current node is located is an I-frame / I-slice and the use of IBC mode is allowed, pred_mode_ibc_flag is 1 by default, i.e., IBC mode is used for chroma blocks by default. Alternatively, if the type of the picture where the current node is located is a P / B-frame / slice, pred_mode_ibc_flag is 0 by default.

[0190] In VTM, whether the prediction mode of the preset position is the IBC mode may be determined based on information indicated by the syntax element pred_mode_ibc_flag. For example, when pred_mode_ibc_flag is 1, it indicates that the IBC prediction mode is used. Alternatively, when pred_mode_ibc_flag is 0, it indicates that the IBC mode is not used. When pred_mode_ibc_flag is not present in the bitstream, the value of pred_mode_ibc_flag is equal to the value of sps_ibc_enabled_flag if in an I-frame / I-slice, and pred_mode_ibc_flag is 0 if in a P-frame / slice or B-frame / slice. When sps_ibc_enabled_flag is 1, it indicates that the current picture is allowed to be used as a reference picture in the process of decoding the current picture. Alternatively, when sps_ibc_enabled_flag is 0, it indicates that the current picture is not allowed to be used as a reference picture in the process of decoding the current picture.

[0191] The intra prediction mode of a chroma block may be one of DC mode, planar mode, angular mode, cross-component linear model (CCLM) mode, and chroma derived mode (DM), for example, DC mode, planar mode, angular mode, cross-component linear model mode, and chroma derived mode in VTM.

[0192] Step 90642B specifically includes:

[0193] Obtain the prediction modes of the multiple luma blocks of the current node, and determine the prediction mode of the chroma block corresponding to the current node using the following method:

[0194] If intra prediction is performed on all of the luma blocks, then intra prediction is performed on the chroma blocks, and the intra prediction mode is parsed from the bitstream as the intra prediction mode of the chroma blocks.

[0195] When inter prediction is performed for all of the luma blocks, one of the following methods is used to determine the chroma prediction mode.

[0196] Method 1: Perform inter prediction on the chroma block to obtain the motion information of the preset position as the motion information of the chroma block. The preset position has the same meaning as in the first embodiment.

[0197] Method 2: Parse the flag pred_mode_flag to determine whether intra prediction or inter prediction is performed on the chroma block. If intra prediction is performed on the chroma block, parse the intra prediction mode from the bitstream as the intra prediction mode of the chroma block. Alternatively, if inter prediction is performed on the chroma block, obtain the motion information of the preset position as the motion information of the chroma block.

[0198] For multiple luma blocks, if inter-prediction and intra-prediction are involved, the mode information of the chroma blocks may be determined in one of the following ways. (1) When the prediction mode of the preset position is inter prediction, inter prediction is performed on the chroma block, and motion information of the preset position is obtained as motion information of the chroma block. (2) If the prediction mode of the preset position is intra prediction, intra prediction is performed on the chroma block, and the intra prediction mode is parsed from the bitstream as the intra prediction mode of the chroma block, or the intra prediction mode of the chroma block is directly determined to be one of DC mode, planar mode, angular mode, cross-component linear model mode, or DM mode. (3) If the prediction mode of the preset position is the IBC mode, the chroma block is predicted in the IBC mode, and the displacement vector information of the preset position is obtained as the displacement vector information of the chroma block. (4) The chroma prediction mode is directly specified as one mode in a mode set, where the mode set includes AMVP mode, IBC mode, skip mode, DC mode, planar mode, angular mode, cross-component linear model mode, and DM mode.

[0199] Step 90644: Parse the residual information of the chroma block. The residual information of the chroma block is included in the transform unit. The transform type may be DCT-2 by default.

[0200] Step 908: Split the current node into child nodes, where each child node includes a luma block and a chroma block. Step 901 is performed for each child node, and parsing continues for the child node's split mode to determine whether the child node (also called node) needs to be further split.

[0201] After the sub-region division mode of the luma block and the prediction information and residual information of each of the sub-regions are obtained, an inter-prediction process or an intra-prediction process may be performed on each sub-region based on the corresponding prediction mode of the sub-region to obtain an inter-predicted picture or an intra-predicted picture of the sub-region. Then, an inverse quantization and an inverse transform process are performed on the transform coefficients based on the residual information of each of the sub-regions to obtain a residual picture. The residual picture is superimposed on the predicted picture in the corresponding sub-region to generate a reconstructed picture of the luma block.

[0202] After the prediction information and residual information of the chroma block are obtained, an inter-prediction process or an intra-prediction process may be performed on the chroma block based on the prediction mode of the chroma block to obtain an inter-predicted picture or an intra-predicted picture of the chroma block. Then, an inverse quantization and inverse transform process is performed on the transform coefficients based on the residual information of the chroma block to obtain a residual picture. The residual picture is superimposed on the predicted picture of the chroma block to generate a reconstructed picture of the chroma block.

[0203] In embodiment 1 of the present invention, when the chroma blocks of the current node are not further divided, the method may be used to divide only the luma blocks of the current node, thereby improving the encoding and decoding efficiency, reducing the maximum throughput of the codec, and facilitating the implementation of the codec.

[0204] Embodiment 2 Compared with embodiment 1, the following constraints are added to step 9062: The same prediction mode is used for luma nodes (i.e., child nodes of a luma block). That is, for each luma node, intra prediction or inter prediction is performed. The other steps are similar to those in embodiment 1, and the details will not be described again.

[0205] Any one of the following methods may be used to use the same prediction mode for the luma nodes:

[0206] Method 1: If the current frame is an I-frame, intra prediction is performed for all child nodes of the current node by default. Alternatively, if the current frame is a P-frame or a B-frame, the first node (which may be the first child node for short) on which parsing is performed is parsed to obtain the prediction mode of the first node. The prediction modes of the remaining child nodes (which may be luma nodes for short) are the prediction mode of the first node on which parsing is performed by default. Alternatively, Method 2: If the current frame is an I-frame, intra prediction is performed for all child nodes of the current node by default, or if the current frame is a P-frame or B-frame, inter prediction is performed for all child nodes of the current node by default.

[0207] Embodiment 3 11 is a flowchart 1100 of a method according to Embodiment 3 of the present invention. Embodiment 3 is similar to Embodiment 1 except for step 1104.

[0208] Step 1104: Based on the split mode of the current node, determine the size of the current node, the prediction mode of the first node (which may be abbreviated as the first child node) in which parsing is performed within the current node, and whether the chroma blocks of the current node are split. Here, the first child node includes only luma blocks. The same prediction mode is performed for multiple child nodes of the current node. Each child node includes only luma blocks.

[0209] Whether the division mode of the current node and the size of the current node are determined first, or the prediction mode of the first child node is determined first, is not limited in this embodiment of the present invention.

[0210] Based on embodiment 1 or 2, in embodiment 3, the division mode of the chroma block of the current node, the corresponding prediction information parse mode, and the corresponding residual information parse mode are determined by referring to the prediction mode of the first child node of the current node.

[0211] In implementation, based on the division mode and size of the current node, it is determined that a child node generated by dividing the current node includes a macroblock whose side length is equal to the first threshold or shorter than the second threshold, and the prediction mode of the first child node is intra prediction. In this case, the chroma block of the current node is not further divided. As in embodiment 1, for example, the first threshold may be 2, and the second threshold may be 4.

[0212] In this embodiment of the present invention, a chroma block whose side length is the first threshold is a chroma block whose width or height is the first threshold.

[0213] In another implementation, the prediction mode of the first child node is intra prediction, and any one of conditions 1 to 5 is true. Condition 1: The width of the current node is equal to twice the second threshold, and the split mode of the current node is vertical bisection. Condition 2: The height of the current node is equal to twice the second threshold, and the split mode of the current node is horizontal bisection. Condition 3: The width of the current node is equal to four times the second threshold, and the division mode of the current node is vertical-thirds. Condition 4: The height of the current node is equal to four times the second threshold, and the division mode of the current node is horizontally divided into three; or Condition 5: The width of the current node is equal to twice the second threshold, the division mode of the current node is 4-division, and the chroma block of the current node is not further divided.

[0214] Typically, the width of the current node is the width of the luma block corresponding to the current node, and the height of the current node is the height of the luma block corresponding to the current node. In a particular implementation, for example, the second threshold may be 4.

[0215] When the prediction mode of the first child node is intra prediction, similar to the first embodiment, in the third implementation, it may be determined whether a chroma block having a width equal to the first threshold (or a chroma block having a width narrower than the second threshold) is generated by dividing the current node based on the division mode of the current node. If it is determined that a child node generated by dividing the current node includes a chroma block having a width equal to the first threshold (or a chroma block having a width narrower than the second threshold) and the prediction mode of the first child node is intra prediction, the chroma block of the current node is not further divided. For example, the first threshold may be 2, and the second threshold may be 4.

[0216] When the prediction mode of the first child node is intra prediction, similar to the first embodiment, in the fourth implementation, it may be determined whether a chroma block having fewer chroma samples than a third threshold value will be generated by splitting the current node based on the split mode of the current node. If it is determined that a child node generated by splitting the current node includes a chroma block having fewer chroma samples than the third threshold value and the prediction mode of the first child node is intra prediction, the chroma block of the current node is not further split. For example, the third threshold value may be 16. In this case, chroma blocks having fewer chroma samples than 16 include, but are not limited to, 2x2 chroma blocks, 2x4 chroma blocks, and 4x2 chroma blocks. The third threshold value may be 8. In this case, chroma blocks having fewer chroma samples than 8 include, but are not limited to, 2x2 chroma blocks.

[0217] Specifically, if either Condition 1 or Condition 2 is true, it may be determined that a chroma block having a number of chroma samples less than the third threshold is generated by splitting the current node based on the split mode of the current node. Otherwise, it may be determined that a chroma block having a number of chroma samples less than the third threshold is not generated by splitting the current node based on the split mode of the current node. Condition 1: The product of the width and height of the current node is less than 128, and the division mode of the current node is vertical halving or horizontal halving; or Condition 2: The product of the width and height of the current node is less than 256, and the division mode of the current node is vertical 3-division, horizontal 3-division, or 4-division.

[0218] Specifically, in another implementation, if either Condition 3 or Condition 4 is true, it may be determined that a chroma block having a number of chroma samples less than the third threshold is generated by splitting the current node based on the splitting mode of the current node. Otherwise, it may be determined that a chroma block having a number of chroma samples less than the third threshold is not generated by splitting the current node based on the splitting mode of the current node. Condition 3: The product of the width and height of the current node is equal to 64, and the split mode of the current node is vertical 2-split, horizontal 2-split, 4-split, horizontal 3-split, or vertical 3-split; or Condition 4: The product of the width and height of the current node is equal to 128, and the division mode of the current node is vertical 3-division or horizontal 3-division.

[0219] When the prediction mode of the first child node is intra prediction, similar to the first embodiment, in the fifth implementation, it may be determined whether a chroma block whose height is the first threshold (or a chroma block whose height is lower than the second threshold) is generated by dividing the current node based on the division mode of the current node. If it is determined that a child node generated by dividing the current node includes a chroma block whose height is the first threshold (or a chroma block whose height is lower than the second threshold) and the prediction mode of the first child node is intra prediction, the chroma block of the current node is not further divided. For example, the first threshold may be 2, and the second threshold may be 4.

[0220] If the chroma block of the current node is not further divided, the chroma block of the current node becomes a coding unit including only the chroma block. The method 1100 may further include obtaining prediction information and / or residual information of the chroma block.

[0221] In another implementation, based on the partitioning mode of the current node and the size of the current node, it is determined that a child node generated by partitioning the current node includes a chroma block whose side length is shorter than a threshold. If the prediction mode of the first child node is inter prediction, the chroma block of the current node is partitioned based on the partitioning mode of the current node. Optionally, motion information of the corresponding child node of the chroma block is determined based on the motion information of the child node of the current node. For example, the motion information of the child node of the chroma block of the current node may be set as the motion information of the corresponding luma node (i.e., the motion information of each child node of the chroma block does not need to be parsed from the bitstream). The child node of the chroma block is parsed to obtain residual information of the child node of the chroma block.

[0222] When the prediction mode of the first child node is inter prediction, any one of the following conditions is true: Condition 1: The width of the current node is equal to twice the second threshold, and the split mode of the current node is vertical bisection. Condition 2: The height of the current node is equal to twice the second threshold, and the split mode of the current node is horizontal bisection. Condition 3: The width of the current node is equal to four times the second threshold, and the division mode of the current node is vertical-thirds. Condition 4: The height of the current node is equal to four times the second threshold, and the division mode of the current node is horizontally divided into three; or Condition 5: If the width of the current node is equal to twice the second threshold and the split mode of the current node is quad, the chroma block of the current node still needs to be split.

[0223] Typically, the width of the current node is the width of the luma block corresponding to the current node, and the height of the current node is the height of the luma block corresponding to the current node. In a particular implementation, for example, the second threshold may be 4.

[0224] In embodiment 3, the chroma block partition mode, the corresponding prediction information parsing mode, and the corresponding residual information parsing mode may be determined based on the prediction mode of the luma node. In this way, greater flexibility is achieved. Furthermore, when the prediction mode of the luma node is intra prediction, the chroma block of the current node is not further partitioned. This improves chroma encoding and decoding efficiency, reduces the maximum codec throughput, and facilitates codec implementation.

[0225] Some syntax structures at the CU level may be shown in Table 1. If the current node is not further divided into child nodes, the current node is a coding unit, and the predictive blocks of the coding unit are parsed according to the following syntax structure.

[0226] skip_flag is a flag that indicates the skip mode. When the value of skip_flag is 1, it indicates that the skip mode is used for the current CU. Alternatively, when the value of skip_flag is 0, it indicates that the skip mode is not used for the current CU.

[0227] merge_flag is a flag that represents the direct mode. When the value of merge_flag is 1, it indicates that the merge mode is currently used for the CU. Alternatively, when the value of merge_flag is 0, it indicates that the merge mode is not used.

[0228] cu_pred_mode is a flag that indicates the prediction mode of the coding unit. When the value of cu_pred_mode is 1, it indicates that an intra prediction mode is used for the current coding unit. Alternatively, when the value of cu_pred_mode is 0, it indicates that a common inter prediction mode is used for the current coding unit. Table 1 [Table 1]

[0229] Some syntax parses at the CU level may be shown in Table 2. Table 2 is just an example. In Table 2, the meaning of skip_flag is the same as that of skip_flag in Table 1, and the meaning of pred_mode_flag is the same as that of cu_pred_mode in Table 1.

[0230] cu_skip_flag is a flag that indicates the skip mode. When the value of cu_skip_flag is 1, it indicates that the skip mode is currently used for the CU. Alternatively, when the value of cu_skip_flag is 0, it indicates that the skip mode is not currently used for the CU.

[0231] merge_flag is a flag that represents the direct mode. When the value of merge_flag is 1, it indicates that the merge mode is currently used for the CU. Alternatively, when the value of merge_flag is 0, it indicates that the merge mode is not used.

[0232] pred_mode_flag is a flag indicating the prediction mode of the coding unit. When the value of pred_mode_flag is 1, it indicates that an intra prediction mode is used for the current prediction unit. Alternatively, when the value of pred_mode_flag is 0, it indicates that a common inter prediction mode is used for the current prediction unit. When the value of pred_mode_flag is 1, the value of CuPredMode[x0][y0] is MODE_INTRA. Alternatively, when the value of pred_mode_flag is 0, the value of CuPredMode[x0][y0] is MODE_INTER. Table 2 [Table 2]

[0233] A node having a size of 8×M (or M×8) is divided into two child nodes having a size of 4×M (or M×4) in a vertical halving (or horizontal halving) mode. Similarly, a node having a size of 16×M (or M×16) is divided into four child nodes having a size of 4×M (or M×4) and one child node having a size of 8×N (or N×8) in a vertically expanded quad-split (or horizontally expanded quad-split) mode. Similarly, a node having a size of 16×M (or M×16) is divided into two child nodes having a size of 4×M (or M×4) and one child node having a size of 8×M (or M ... In the YUV4:2:0 data format, the resolution of the chroma components is half that of the luma components. That is, a 4×M node includes one 4×M luma block and two 2×(M / 2) chroma blocks. In a hardware decoder, the processing cost of small blocks (specifically, having sizes of 2x2, 2x4, and 2x8) is relatively high. However, in this division mode, small blocks having sizes of 2x2, 2x4, etc. are generated, which is undesirable for the implementation of a hardware decoder. In a hardware decoder, the processing complexity of small blocks is relatively high, which is specifically realized in the following three ways:

[0234] (1) Problems with intra prediction: In hardware design, in order to improve processing speed, 16 pixels are usually processed simultaneously once in intra prediction, and small blocks with sizes such as 2x2, 2x4, 4x2, etc. contain fewer than 16 pixels, which reduces the intra prediction processing performance.

[0235] (2) Problems in Coefficient Coding: In HEVC, transform coefficient coding is based on a coefficient group (CG) containing 16 coefficients, but small blocks with sizes such as 2x2, 2x4, 4x2, etc. contain 4 or 8 transform coefficients. As a result, coefficient groups containing 4 and 8 coefficients need to be added to support coefficient coding of these small blocks. This results in increased implementation complexity.

[0236] (3) Problems in inter-prediction: Inter-prediction for small blocks results in relatively high requirements for data bandwidth, which also affects the decoding processing speed.

[0237] When a node is further divided based on a division mode and one of the generated child nodes includes a chroma block with a side length of 2, the luma blocks included in the child node continue to be further divided in this division mode, and the chroma blocks included in the child node are not further divided. This mode can avoid generating chroma blocks with a side length of 2, reduce the maximum decoder throughput, and facilitate decoder implementation. Furthermore, a method for determining a chroma block prediction mode based on a luma block prediction mode is proposed, which effectively improves coding efficiency.

[0238] The method provided in the present invention may be applied to the video codec in the above-mentioned embodiments.

[0239] Embodiment 4 This embodiment relates to a block division mode in video decoding. The video data format in this embodiment is YUV4:2:0 format. A similar mode may be used for YUV4:2:2 data.

[0240] Step 1: Parse the split mode S of node A. Here, if node A continues to be split, step 2 is executed. Alternatively, if the current node is not further split into child nodes, the current node corresponds to one coding unit, and information about the coding unit is obtained through parsing.

[0241] The partitioning mode of node A may be at least one of 4-way split, vertical 2-way split, horizontal 2-way split, vertical 3-way split, and horizontal 3-way split, or may be another partitioning mode. The partitioning mode of node A is not limited in the present invention. The partitioning mode information of the current node may be transmitted in the bitstream, and the partitioning mode of the current node may be obtained by parsing a corresponding syntax element in the bitstream. Alternatively, the partitioning mode of the current node may be determined according to a preset rule, and is not limited in the present invention.

[0242] Step 2: Determine whether the chroma block of at least one child node B among the child nodes obtained by splitting node A based on the split mode S is a small block (or whether the width, height, and / or split mode of node A and / or the width and height of node B satisfy at least one of the conditions). If the chroma block of at least one child node B among the child nodes obtained by splitting node A is a small block, steps 3 to 6 are executed.

[0243] Specifically, to determine whether a chroma block of at least one child node B of node A is a sub-block, one of the following methods may be used: (1) If the chroma block of at least one child node B of node A has a size of 2x2, 2x4, or 4x2, then the chroma block of at least one child node B of node A is a small block. (2) If the width or height of the chroma block of at least one child node B of node A is 2, the chroma block of at least one child node B of node A is a small block. (3) If node A contains 128 luma samples and ternary tree partitioning has been performed on node A, or if node A contains 64 luma samples and binary tree partitioning has been performed on node A in quad-tree partitioning mode or ternary tree partitioning mode, the chroma block of at least one child node B of node A is a small block. (4) If node A contains 256 luma samples and the node is split in 3-ary tree splitting mode or 4-ary tree splitting mode, or if node A contains 128 luma samples and the node is split in 2-ary tree splitting mode, the chroma block of at least one child node B of node A is a small block. (5) If node A contains N1 luma samples and ternary tree decomposition is performed on node A, where N1 is 64, 128, or 256. (6) If node A contains N luma samples and quadtree decomposition is performed on node A, where N is 64, or 256; or (7) If node A contains N3 luma samples and node A is split in binary tree splitting mode, where N3 is 64, 128, or 256.

[0244] It should be noted that node A containing 128 luma samples may also be described as the area of ​​the current node being 128, or the product of the width and height of node A being 128. Details will not be described here.

[0245] Step 3: Restrict intra prediction or inter prediction to be performed for all coding units within the coverage area of ​​node A. In intra prediction and inter prediction for all coding units, parallel processing for small blocks may be implemented by hardware, thereby improving encoding and decoding performance.

[0246] To determine whether to perform intra prediction or inter prediction for all coding units within the coverage area of ​​node A, one of the following methods may be used.

[0247] Method 1: The decision is made based on a flag in the syntax table.

[0248] If the chroma blocks of at least one child node B obtained by splitting node A based on the split mode S are small blocks (and the chroma blocks of node A are not small blocks), a flag cons_pred_mode_flag is parsed from the bitstream. When the value of cons_pred_mode_flag is 0, it indicates that inter prediction is performed for all coding units in the coverage area of ​​node A. Alternatively, when the value of cons_pred_mode_flag is 1, it indicates that intra prediction is performed for all coding units in the coverage area of ​​node A. cons_pred_mode_flag may be a syntax element that needs to be parsed in the block splitting process. When the syntax element is parsed, the cu_pred_mode of the coding units in the coverage area of ​​node A may no longer be parsed, and the value of cu_pred_mode is a default value corresponding to the value of cons_pred_mode_flag.

[0249] It should be noted that only intra prediction mode can be used for the child nodes of node A, for example, if node A is in an intra picture (that is, the type of the picture where node A is located is intra type or I type), or if node A is in an intra picture and IBC technology is not used for the sequence, the value of cons_pred_mode_flag is 1 by default, and cons_pred_mode_flag does not exist in the bitstream. The IBC technology may belong to inter prediction or intra prediction.

[0250] Method 2: The decision is made based on the prediction mode of the first node in node A's region.

[0251] The prediction mode of the first coding unit B0 in the area of ​​node A (wherein the prediction mode of the first coding unit B0 is not limited) is parsed. If the prediction mode of B0 is intra prediction, intra prediction is performed on all coding units in the coverage area of ​​node A. Alternatively, if the prediction mode of B0 is inter prediction, inter prediction is performed on all coding units in the coverage area of ​​node A.

[0252] Step 4: Determine the chroma block partition mode and luma block partition mode of node A based on the prediction mode used for the coding unit in the coverage area of ​​node A.

[0253] If intra prediction mode is used for all coding units within the coverage area of ​​node A, the luma block of node A is split based on the split mode S to obtain N luma coding tree nodes. The chroma block of node A is not split and corresponds to one chroma coding block (chroma CB for short). The N luma coding tree nodes may or may not be limited to not being further split. If the luma child node continues to be split, the split mode of the luma child node is parsed to perform recursive splitting. If the luma coding tree node is not further split, the luma coding tree node corresponds to a luma coding block (luma CB for short). The chroma transform block and chroma coding block corresponding to chroma CB have the same size, and the chroma prediction block and chroma coding block have the same size.

[0254] If inter prediction mode is used for all coding units within the coverage area of ​​node A, the luma blocks and chroma blocks of node A are further divided into N coding tree nodes containing luma blocks and chroma blocks based on the division mode S, and the N coding tree nodes may continue to be divided or may not be divided and may correspond to coding units containing luma blocks and chroma blocks.

[0255] Step 5: Parse the prediction information and residual information of the CU obtained by splitting node A.

[0256] The prediction information includes a prediction mode (indicating an intra prediction mode or a non-intra prediction mode), an intra prediction mode, an inter prediction mode, motion information, etc. The motion information may include information such as a prediction direction (forward, backward, or bidirectional), a reference index, and a motion vector.

[0257] The residual information includes coded block flags (CBFs), transform coefficients, transform type (e.g., DCT-2, DCT-7, DCT-8), etc. The transform type may be DCT-2 by default.

[0258]

[0033] In the case where it is limited that only intra prediction can be performed for each CU obtained by splitting node A, parsing the prediction block of luma CB obtained by splitting node A includes setting skip_flag, merge_flag, and cu_pred_mode to 0, 0, and 1, respectively (i.e., none of skip_flag, merge_flag, and cu_pred_mode are present in the bitstream), or setting skip_flag and cu_pred_mode to 0 and 1 by default, respectively (i.e., none of skip_flag and cu_pred_mode are present in the bitstream), and parsing the intra prediction mode information of luma CB, and parsing the prediction block of chroma CB obtained by splitting node A includes parsing the intra prediction mode of chroma CB. A method of parsing the intra prediction mode of chroma CB may be as follows: (1) Parse a syntax element from the bitstream to obtain the intra prediction mode of chroma CB. and (2) directly set the intra prediction mode of the chroma CB to one prediction mode in the chroma intra prediction mode set, for example, one of the cross-component linear model mode, DM mode (chroma derived mode), or IBC mode.

[0259] If it is limited to the fact that only inter prediction can be performed for each CU obtained by splitting node A, parsing the prediction mode of the CU obtained by splitting node A includes parsing skip_flag or / and merge_flag, setting cu_pred_mode to 0 by default, and obtaining inter prediction blocks such as merge index, inter prediction direction, reference index, motion vector predictor index, and motion vector difference through parsing.

[0260] skip_flag is a flag representing the skip mode. When the value of skip_flag is 1, it indicates that the skip mode is used for the current CU. Alternatively, when the value of skip_flag is 0, it indicates that the skip mode is not used for the current CU. merge_flag is a flag representing the merge mode. When the value of merge_flag is 1, it indicates that the merge mode is used for the current CU. Alternatively, when the value of merge_flag is 0, it indicates that the merge mode is not used. cu_pred_mode is a flag representing the prediction mode of the coding unit. When the value of cu_pred_mode is 1, it indicates that intra prediction is performed for the current prediction unit. Alternatively, when the value of cu_pred_mode is 0, it indicates that common inter prediction is performed for the current prediction unit (information such as the inter prediction direction, reference index, motion vector prediction index, and motion vector difference component is identified in the bitstream).

[0261] It should be noted that in this embodiment, the intra prediction mode is a prediction mode for generating a prediction of a coding block using spatial reference pixels of the picture in which the coding block is located, such as direct current mode (DC mode), planar mode, or angular mode, or template matching mode and IBC mode.

[0262] An inter prediction mode is a prediction mode that generates a prediction of a coding block using temporal reference pixels in the reference picture of the coding block, such as skip mode, merge mode, advanced motion vector prediction (AMVP) mode, or common inter mode or IBC mode.

[0263] Step 6: Decode each CU to obtain the reconstructed signal of the picture block corresponding to node A.

[0264] For example, the predictive block of each CU performs an inter prediction process or an intra prediction process on the CU to obtain an inter predicted picture or an intra predicted picture of the CU. Then, inverse quantization and inverse transform processes are performed on the transform coefficients based on the residual information of each CU to obtain a residual picture. The residual picture is superimposed on the predicted picture in the corresponding region to generate a reconstructed picture.

[0265] According to the division mode in the fourth embodiment, small chroma blocks on which intra prediction is performed are not generated, thereby solving the problem of intra prediction of small blocks.

[0266] Embodiment 5 Steps 1, 2, 3, and 6 of this embodiment are the same as those of the fourth embodiment.

[0267] Step 4: Determine the chroma block partition mode and luma block partition mode of node A.

[0268] The luma block of node A continues to be split based on the split mode S to generate N luma coding tree nodes. The chroma block of node A is not further split and corresponds to one chroma coding block (chroma CB). The chroma transform block and the chroma coding block corresponding to the chroma CB have the same size. [Note: Compared with embodiment 4, in this embodiment, regardless of whether an inter prediction mode or an intra prediction mode is used, the chroma block is always not split, and the luma block is always split based on the split mode S regardless of the prediction mode of the coverage area of ​​node A.]

[0269] Step 5: Parse the prediction block and residual information of the CU obtained by splitting node A.

[0270] When it is restricted that only intra prediction can be performed for each CU obtained by dividing node A, the processing is the same as that in embodiment 4.

[0271] If it is limited to only being able to perform inter prediction for each CU obtained by dividing node A, parsing the prediction mode of the luma CB obtained by dividing node A includes parsing skip_flag and / or merge_flag, setting cu_pred_mode to 0 by default, and obtaining inter prediction blocks such as a merge index, an inter prediction direction, a reference index, a motion vector predictor index, and a motion vector difference through parsing. Motion information of each 4x4 sub-block in the luma CB is derived from the inter prediction block obtained through parsing.

[0272] If it is limited that only inter prediction can be performed for each CU obtained by dividing node A, the prediction block of chroma CB obtained by dividing node A does not need to be parsed, and chroma CB is divided into 2x2 chroma sub-blocks (wherein the division mode may be division mode S). The motion information of each 2x2 chroma sub-block is the motion information of a 4x4 luma region corresponding to the 2x2 chroma sub-block.

[0273] According to the division mode in embodiment 5, neither small chroma blocks on which intra prediction is performed nor transform blocks with less than 16 pixels are generated, so the above-mentioned problems in intra prediction and coefficient coding are solved in embodiment 5.

[0274] Embodiment 6 Steps 1, 2, 3, 4, and 6 of this embodiment are the same as those of the fifth embodiment.

[0275] Step 5: Parse the prediction block and residual information of the CU obtained by splitting node A.

[0276] When it is restricted that only intra prediction can be performed for each CU obtained by dividing node A, the processing is the same as that in embodiment 5.

[0277] If it is limited to the fact that only inter prediction can be performed for each CU obtained by dividing node A, the parsing of the prediction block of luma CB obtained by dividing node A is the same as that in embodiment 5.

[0278] If it is limited that only inter prediction can be performed for each CU obtained by splitting node A, the prediction block of the chroma CB obtained by splitting node A does not need to be parsed, the chroma prediction block and the chroma coding block have the same size, and the motion information of the chroma CB is the motion information of a specific preset position within the luma region corresponding to the chroma CB (e.g., the center, bottom right corner, or top left corner of the luma region).

[0279] According to the division mode in the sixth embodiment, none of the small chroma blocks on which intra prediction is performed, the small transform blocks, and the small chroma blocks on which inter prediction is generated are generated.

[0280] Embodiment 7 Step 1: Step 1 is the same as step 1 in embodiment 4.

[0281] Step 2: Determine whether the luma block of at least one child block B among the child nodes obtained by splitting node A based on the split mode S is a 4x4 luma block (whether the width, height, and / or split mode of node A, and / or the width and height of node B satisfy at least one of the conditions in case 1).

[0282] If the size (i.e., width and height) and / or partition mode S of node A satisfy at least one of the conditions in case 1, intra prediction is limited to be performed on all coding units within the coverage area of ​​node A. Otherwise, it is determined whether the chroma block of at least one child node B among the child nodes obtained by splitting node A based on partition mode S is a small block (whether the size and / or partition mode S of node A and / or the width and height of node B satisfy at least one of the conditions in case 2), and if yes, steps 3 to 6 are performed.

[0283] Specifically, there are two cases for determining whether the chroma block of at least one child node B of node A is a small block:

[0284] Case 1:

[0285] If one or more of the following preset conditions are true, node A is split based on split mode S to obtain 4x4 luma blocks. (1) Node A contains M1 pixels, and the partitioning mode of node A is quadtree partitioning. For example, M1 is 64. (2) Node A contains M2 pixels, and the partitioning mode of node A is ternary tree partitioning. For example, M2 is 64. (3) Node A contains M3 pixels, and the partitioning mode of node A is binary tree partitioning. For example, M3 is 32. (4) The width of node A is equal to four times the second threshold, the height of node A is equal to the second threshold, and the partitioning mode of node A is vertical ternary tree partitioning. (5) The width of node A is equal to the second threshold, the height of node A is equal to four times the second threshold, and the partitioning mode of node A is horizontal ternary tree partitioning. (6) The width of node A is equal to twice the second threshold, the height of node A is equal to the second threshold, and the partitioning mode of the current node is vertical binary tree partitioning. (7) The height of node A is equal to twice the second threshold, the width of node A is equal to the second threshold, and the partitioning mode of the current node is horizontal binary tree partitioning; or (8) The width and / or height of node A is twice the second threshold, and the partitioning mode of node A is quadtree partitioning.

[0286] The size may be the width and height of the picture region corresponding to node A, or the number of luma samples included in the picture region corresponding to node A, or the area of ​​the picture region corresponding to node A.

[0287] Typically, the width of the current node is the width of the luma block corresponding to the current node, and the height of the current node is the height of the luma block corresponding to the current node. In a particular implementation, for example, the second threshold may be 4.

[0288] Case 2: (1) The chroma blocks of at least one child node B of node A have a size of 2x4 or 4x2. (2) The width or height of the chroma block of at least one child node B of node A is 2. (3) Node A contains 128 luma samples and ternary tree partitioning is performed on node A, or node A contains 64 luma samples and binary tree partitioning, quad tree partitioning, or ternary tree partitioning is performed on node A. (4) Node A contains 256 luma samples and ternary or quad-tree decomposition is performed on the node, or node A contains 128 luma samples and binary tree decomposition is performed on the node. (5) Node A contains N1 luma samples, and a ternary tree decomposition is performed on node A, where N1 is 64, 128, or 256. (6) Node A contains N luma samples, and a quadtree decomposition is performed on node A, where N is 64 or 256; or (7) Node A contains N3 luma samples, and binary tree division is performed on node A, where N3 is 64, 128, or 256.

[0289] It should be noted that node A containing 128 luma samples may also be described as the area of ​​the current node being 128, or the product of the width and height of node A being 128. Details will not be described here.

[0290] Step 3: Step 3 is the same as step 3 in embodiment 4.

[0291] Step 4: Determine the chroma block partition mode and luma block partition mode of node A based on the prediction mode used for the coding unit in the coverage area of ​​node A.

[0292] When inter prediction mode is used for all coding units in the coverage area of ​​node A, the luma blocks and chroma blocks of node A are split based on the split mode S to obtain child nodes of node A and / or child nodes in the coverage area of ​​node A. If a 4x4 luma block is generated based on the split mode of the child nodes of node A and / or child nodes in the coverage area of ​​node A, the split mode of the child nodes is not permitted, or the child nodes cannot be further split. For example, if node A has a size of 8x8 and two 8x4 (or two 4x8) nodes are generated by splitting node A in a horizontal binary tree splitting (or vertical binary tree splitting) mode, the 8x4 (or 4x8) nodes are further split into 4x4 blocks. In this case, the 8x4 (or 4x8) nodes cannot be further split.

[0293] When the intra prediction mode is used for all coding units in the coverage area of ​​node A, the methods in embodiments 4, 5, and 6 may be used as implementation methods, and the details will not be described again here. For example, the luma block of node A is split, and the chroma block of node A is not split.

[0294] Step 5: Parse the prediction block and residual information of the CU obtained by splitting node A.

[0295] This step is the same as step 5 in embodiment 4, and the details will not be described again here.

[0296] Step 6: Decode each CU to obtain the reconstructed signal of the picture block corresponding to node A.

[0297] Step 6 may be implemented in the same manner as step 6 in embodiment 4, and will not be further described here.

[0298] Embodiment 8 Step 1: Step 1 is the same as step 1 in embodiment 4.

[0299] Step 2: Determine whether the luma block of at least one child block B among the child nodes obtained by dividing node A based on the division mode S is a 4x4 luma block (whether the width, height, and / or division mode of node A and / or the width and height of node B satisfy at least one of the conditions in case 1). If the size (i.e., width and height) and / or division mode S of node A satisfy at least one of the conditions in case 1, intra prediction is restricted to be performed on all coding units within the coverage area of ​​node A. Or, It is determined whether the chroma block of at least one child node B among the child nodes obtained by dividing node A based on the division mode S is a small block (or whether the size of node A and / or the division mode S, and / or the width and height of node B satisfy at least one of the conditions in Case 2), and steps 3 to 6 are performed.

[0300] Specifically, there are two cases for determining whether the chroma block of at least one child node B of node A is a small block:

[0301] Case 1:

[0302] If one or more of the following preset conditions are true, node A is split based on split mode S to obtain 4x4 luma blocks. (1) Node A contains M1 pixels, and the partitioning mode of node A is quadtree partitioning. For example, M1 is 64. (2) Node A contains M2 pixels, and the partitioning mode of node A is ternary tree partitioning. For example, M2 is 128. (3) Node A contains M3 pixels, and the partitioning mode of node A is binary tree partitioning. For example, M3 is 32. (4) The width of node A is equal to four times the second threshold, the height of node A is equal to the second threshold, and the partitioning mode of node A is vertical ternary tree partitioning. (5) The width of node A is equal to the second threshold, the height of node A is equal to four times the second threshold, and the partitioning mode of node A is horizontal ternary tree partitioning. (6) The width of node A is equal to twice the second threshold, the height of node A is equal to the second threshold, and the partitioning mode of the current node is vertical binary tree partitioning. (7) The height of node A is equal to twice the second threshold, the width of node A is equal to the second threshold, and the partitioning mode of the current node is horizontal binary tree partitioning; or (8) The width and / or height of node A is twice the second threshold, and the partitioning mode of node A is quadtree partitioning.

[0303] The size may be the width and height of the picture region corresponding to node A, or the number of luma samples included in the picture region corresponding to node A, or the area of ​​the picture region corresponding to node A.

[0304] Typically, the width of the current node is the width of the luma block corresponding to the current node, and the height of the current node is the height of the luma block corresponding to the current node. In a particular implementation, for example, the second threshold may be 4.

[0305] Case 2: (1) The chroma blocks of at least one child node B of node A have a size of 2x4 or 4x2. (2) The width or height of the chroma block of at least one child node B of node A is 2. (3) Node A contains 128 luma samples and ternary tree partitioning is performed on node A, or node A contains 64 luma samples and binary tree partitioning, quad tree partitioning, or ternary tree partitioning is performed on node A. (4) Node A contains 256 luma samples and ternary or quad-tree decomposition is performed on the node, or node A contains 128 luma samples and binary tree decomposition is performed on the node. (5) Node A contains N1 luma samples, and a ternary tree decomposition is performed on node A, where N1 is 64, 128, or 256. (6) Node A contains N luma samples, and a quadtree decomposition is performed on node A, where N is 64 or 256; or (7) Node A contains N3 luma samples, and binary tree division is performed on node A, where N3 is 64, 128, or 256.

[0306] It should be noted that node A containing 128 luma samples may also be described as the area of ​​the current node being 128, or the product of the width and height of node A being 128. Details will not be described here.

[0307] Step 3. Step 3 is the same as step 3 in embodiment 4.

[0308] Step 4. Determine the chroma block partition mode and luma block partition mode of node A based on the prediction mode used for the coding unit in the coverage area of ​​node A.

[0309] If inter prediction mode is used for all coding units within the coverage area of ​​node A, the luma blocks and chroma blocks of node A are split based on split mode S to obtain child nodes of node A and / or child nodes within the coverage area of ​​node A. If a 4x4 luma block is generated based on the split mode of child nodes of node A and / or child nodes within the coverage area of ​​node A, the split mode of the child nodes is not permitted, or the child nodes cannot be further split. For example, if node A has a size of 8x8 and two 8x4 (or two 4x8) nodes are generated by splitting node A in a horizontal binary tree splitting (or vertical binary tree splitting) mode, the 8x4 (or 4x8) nodes are further split into 4x4 blocks. In this case, the 8x4 (or 4x8) nodes cannot be further split.

[0310] When the intra prediction mode is used for all coding units in the coverage area of ​​node A, the methods in embodiments 4, 5, and 6 may be used as implementation methods, and the details will not be described again here. For example, the luma block of node A is split, and the chroma block of node A is not split.

[0311] Step 5. Parse the prediction block and residual information of the CU obtained by splitting node A.

[0312] This step is the same as step 5 in embodiment 4, and the details will not be described again here.

[0313] Step 6. Decode each CU to obtain the reconstructed signal of the picture block corresponding to node A.

[0314] Step 6 may be implemented in the same manner as step 6 in embodiment 4, and will not be further described here.

[0315] Embodiment 9 If the current region is split once to generate a 4x4 luma block (e.g., 64 luma samples split in QT mode, or 128 luma samples split in TT mode), only intra mode is limited by definition to be used for the current region.

[0316] Otherwise, a flag is transferred to indicate that only inter mode or only intra mode is available for the current region.

[0317] If only inter mode is restricted to be used for the current region, luma and chroma are split together. If a node in the current region is split to generate a 4x4 luma block, this split is not allowed. For example, if the current node is 8x8 and is split in HBT (or VBT) mode to generate two 8x4 nodes, these 8x4 nodes cannot continue to be split if they continue to split to generate a 4x4 CU.

[0318] If the restriction is that only intra mode is available for a region, then this implementation is the same as the original implementation (luma is split, but chroma is not).

[0319] This embodiment of the present invention provides a block partitioning method to avoid using intra prediction modes for chroma blocks with relatively small areas and to facilitate pipelining and implementation of decoder hardware. Furthermore, in inter prediction, the process of parsing syntax elements of some prediction modes may be skipped, thereby reducing coding complexity.

[0320] In this way, the problem in coefficient coding is eliminated and the coding complexity is reduced.

[0321] The block division method may be as follows.

[0322] The split mode of node A is parsed.

[0323] After node A is split based on split mode S, it is determined whether the chroma blocks of at least one child node B are obtained as small blocks. (It is determined whether the width, height, and / or split mode of node A and / or the width and height of node B satisfy at least one of the above conditions.) If it is determined that the chroma blocks of at least one child node B are obtained as small blocks after node A is split based on split mode S, the intra prediction mode or inter prediction mode is used for all coding units within the coverage area of ​​node A.

[0324] A decision is made whether to continue splitting the chroma and luma blocks of node A.

[0325] If intra prediction is performed on all coding units within the coverage area of ​​node A, the luma blocks of node A continue to be split based on partition mode S, and the chroma blocks of node A are not further split. If inter prediction is performed on all coding units within the coverage area of ​​node A, the luma blocks and chroma blocks of node A continue to be split based on partition mode S into N coding tree nodes containing luma blocks and chroma blocks.

[0326] The luma blocks of node A continue to be split based on the split mode S, and the chroma blocks of node A are not further split. The chroma transform blocks and the chroma coding blocks have the same size.

[0327] When intra prediction is performed on all coding units in the coverage area of ​​node A, the chroma prediction block and the chroma coding block have the same size. Alternatively, when inter prediction is performed on all coding units in the coverage area of ​​node A, the chroma prediction block is divided into sub-blocks (where the sub-blocks are smaller than the chroma coding block), and the motion vector of each sub-block is the motion vector in the luma area corresponding to the sub-block.

[0328] The luma block of node A is further divided based on the division mode S. The chroma block of node A is not further divided. The chroma transform block and the chroma coding block corresponding to the chroma block have the same size, the chroma prediction block and the chroma coding block have the same size, and the motion information of the chroma CB is the motion information of a specific preset position in the luma region corresponding to the chroma CB.

[0329] For example, it should be understood that anything disclosed with reference to a described method may also apply to a corresponding apparatus or system configured to perform the method, and vice versa. For example, when one or more particular method steps are described, a corresponding apparatus may include one or more units, such as functional units, to perform the described one or more method steps (e.g., one unit performing one or more steps, or multiple units each performing one or more of the steps), even if such one or more units are not explicitly described or shown in the accompanying drawings. Furthermore, for example, when a particular device is described based on one or more units, such as functional units, a corresponding method may include one step to perform the function of one or more units (e.g., one step to perform the function of one or more units, or multiple steps each used to perform the function of one or more of the units), even if such one or more steps are not explicitly described or shown in the accompanying drawings. Furthermore, it should be understood that features of example embodiments and / or aspects described herein may be combined with each other, unless otherwise specified.

[0330] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted via a computer-readable medium as one or more instructions or code and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communications protocol. In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media or (2) communication media, such as a signal or carrier wave. Data storage media may be any available medium accessible by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described herein. A computer program product may include computer-readable media.

[0331] By way of example, and not limitation, such types of computer-readable storage media may 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 accessible by a computer that can be used to store desired program code in the form of instructions or data structures. Furthermore, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, a server, or another remote source using coaxial cable, fiber optic cable, twisted pair wire, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair wire, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but actually cover non-transitory tangible storage media. As used herein, disks and optical disks include compact discs (CDs), laser disks, optical disks, digital versatile discs (DVDs), soft disks, and Blu-ray disks. Disks typically reproduce data magnetically, while optical disks reproduce data optically with a laser. Combinations of the above should also be included within the scope of computer-readable media.

[0332] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor," as used herein, may refer to any one of the foregoing structures or another structure applicable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding or incorporated into a combined codec. Furthermore, the techniques may be implemented entirely in one or more circuits or logic elements.

[0333] The techniques of this disclosure may be implemented in a wide range of devices or equipment, including a radio, a handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units have been described in this disclosure to highlight functional aspects of devices configured to perform the techniques of the disclosure, but do not necessarily require accomplishment by different hardware units. Rather, as noted above, the units may be combined within a codec hardware unit, or provided by a collection of interoperating hardware units including one or more processors, in combination with appropriate software and / or firmware. [Explanation of symbols]

[0334] 12 Source Device 14 Destination Device 16 Picture Source 18 processors 20 Encoder 22, 28 communication interface 30 Decoder 32 Post Processor 34 Display device

Claims

1. 1. A picture partitioning method, comprising: determining a split mode of a current node including a luma block and a chroma block, the current node being a node in a coding tree; determining that the chroma blocks of the current node will not be further split based on the split mode of the current node and the size of the current node, where the size of the current node comprises the width of the current node, the height of the current node, or a product of the width and height of the current node; Dividing a luma block of the current node according to a division mode of the current node to obtain a child node of the current node; A method comprising:

2. 2. The method of claim 1, wherein, upon determining, based on the split mode of the current node and the size of the current node, that a child node generated by splitting the current node includes child chroma blocks of a size smaller than 16, the chroma blocks of the current node are not further split.

3. The current node belongs to an I slice, 2. The method of claim 1, wherein the chroma blocks of the current node are not further divided when the product of the width and height of the current node is equal to 64 and the partitioning mode of the current node is binary tree partitioning, or when the product of the width and height of the current node is equal to 128 and the partitioning mode of the current node is ternary tree partitioning.

4. 4. The method of claim 1, wherein whether a chroma block of the current node needs to be split is determined based on a split mode of the current node, a size of the current node, and a node prediction mode identifier.

5. 5. The method of claim 4, wherein the current node belongs to a P or B slice, the node prediction mode identifier indicates that inter prediction is not performed on a coding block obtained by dividing the current node, and the chroma blocks of the current node are not further divided when the product of the width and height of the current node is equal to 64 and the division mode of the current node is binary tree division, or when the product of the width and height of the current node is equal to 128 and the division mode of the current node is ternary tree division.

6. The chroma block of the current node is When the product of the width and height of the current node is less than 128 and the division mode of the current node is vertical bisection or horizontal bisection, When the product of the width and height of the current node is less than 256 and the division mode of the current node is vertical 3-division, horizontal 3-division, or 4-division, The product of the width and height of the current node is equal to 64, and the division mode of the current node is vertical 2-division, horizontal 2-division, 4-division, horizontal 3-division, or vertical 3-division, or When the product of the width and height of the current node is equal to 128 and the division mode of the current node is vertical 3 division or horizontal 3 division, The method of claim 1 , wherein no further division is performed.

7. 2. The method of claim 1, wherein the chroma blocks of the current node are not further divided when the width of the current node is equal to two times the threshold and the split mode of the current node is vertical halves, or when the width of the current node is equal to four times the threshold and the split mode of the current node is vertical ternaries, and the threshold is four.

8. A video stream coding device, comprising: a computer-readable storage medium storing instructions; one or more processors in communication with the computer-readable storage medium that, when executing the instructions, determining a split mode of a current node including a luma block and a chroma block, the current node being a node in a coding tree; Determine that the chroma blocks of the current node will not be further divided based on a division mode of the current node and a size of the current node, where the size of the current node comprises a width of the current node, a height of the current node, or a product of the width and height of the current node; a processor configured to split a luma block of the current node based on a split mode of the current node to obtain a child node of the current node; Equipment including.

9. 9. The device of claim 8, wherein a chroma block of the current node is not further split if it is determined, based on a split mode of the current node and a size of the current node, that a child node generated by splitting the current node includes a child chroma block whose side length is less than a threshold, the threshold being 4.

10. 9. The device of claim 8, wherein the chroma blocks of the current node are not further split if it is determined, based on the split mode of the current node and the size of the current node, that a child node generated by splitting the current node includes child chroma blocks of a size smaller than 16.

11. The current node belongs to an I slice, 9. The device of claim 8, wherein the chroma blocks of the current node are not further divided when the product of the width and height of the current node is equal to 64 and the partitioning mode of the current node is binary tree partitioning, or when the product of the width and height of the current node is equal to 128 and the partitioning mode of the current node is ternary tree partitioning.

12. 12. The device of claim 8, wherein whether the chroma block of the current node needs to be split is determined based on a splitting mode of the current node, a size of the current node, and a node prediction mode identifier.

13. 13. The device of claim 12, wherein the current node belongs to a P or B slice, the node prediction mode identifier indicates that inter prediction is not performed on a coding block obtained by dividing the current node, and a chroma block of the current node is not further divided when a product of a width and a height of the current node is equal to 64 and a division mode of the current node is binary tree division, or when a product of a width and a height of the current node is equal to 128 and a division mode of the current node is ternary tree division.

14. The chroma block of the current node is When the product of the width and height of the current node is less than 128 and the division mode of the current node is vertical bisection or horizontal bisection, When the product of the width and height of the current node is less than 256 and the division mode of the current node is vertical 3-division, horizontal 3-division, or 4-division, The product of the width and height of the current node is equal to 64, and the division mode of the current node is vertical 2-division, horizontal 2-division, 4-division, horizontal 3-division, or vertical 3-division, or When the product of the width and height of the current node is equal to 128 and the division mode of the current node is vertical 3 division or horizontal 3 division, 9. The device of claim 8, which is not further divided.

15. 9. The device of claim 8, wherein when the width of the current node is equal to two times the threshold and the split mode of the current node is vertical halves, or when the width of the current node is equal to four times the threshold and the split mode of the current node is vertical ternaries, the chroma blocks of the current node are not further split, and the threshold is four.

16. A non-transitory computer-readable storage medium containing a bitstream encoded by performing the method of any one of claims 1 to 7.