Method for constructing an MPM list, method for obtaining an intra prediction mode of a chroma block, and apparatus
By determining if adjacent block modes are MIP mode and adjusting the MPM list configuration accordingly, the method reduces computational complexity in video coding, specifically for constructing MPM lists in intra prediction.
Patent Information
- Application Number
- JP2023144318
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-06-05
- Filing Date
- 2023-09-06
- Publication Date
- 2025-07-24
- Estimated Expiration
- 2040-06-04
AI Technical Summary
Existing intra prediction methods for video coding require complex conversions between Matrix-based Intra Prediction (MIP) and other intra prediction modes to construct the Most Probable Mode (MPM) list, increasing computational complexity.
The method involves using the MIP mode for the current block and determining whether the intra prediction mode of adjacent blocks is MIP mode, skipping or using the adjacent block's mode in the MPM list configuration based on specific conditions, thereby reducing complexity by avoiding unnecessary conversions.
This approach reduces the complexity of constructing the MPM list by avoiding unnecessary conversions, optimizing computational efficiency in video coding processes.
Smart Images

Figure 0007712988000006 
Figure 0007712988000007 
Figure 0007712988000008
Abstract
Description
Technical Field
[0001] This application claims the priority of Chinese Patent Application No. 201910486183.5, titled "METHOD FOR CONSTRUCTING MPM LIST, METHOD FOR OBTAINING INTRA PREDICTION MODE OF CHROMA BLOCK, AND APPARATUS", filed with the National Intellectual Property Administration on June 5, 2019, the entire content of which is incorporated herein by reference.
[0002] This application relates to the field of video coding, and in particular Most likely mode ( MPM ) to a method for constructing a list, a method for obtaining an intra prediction mode of a chroma block, and an apparatus.
Background Art
[0003] Intra prediction means predicting the current block using the reconstructed pixels in the image where the current block is located. Usually, the predicted value of the pixels in the current block is obtained using the pixels of the reconstructed adjacent blocks around the current block. Intra prediction is to map the reference pixels in a specific direction to each pixel position in the current block in order to obtain the predicted value of the pixel at the corresponding position. Therefore, there are multiple mapping directions or mapping methods to cover various different texture or structural characteristics. Usually, the mapping direction or mapping method is referred to as an intra prediction mode. The set of intra prediction modes may include 35 different intra prediction modes, such as non-directional modes like DC (or average) mode and planar mode, or directional modes like the modes defined in H.265, or may include 67 different intra prediction modes, such as non-directional modes like DC (or average) mode and planar mode, or directional modes like the modes defined in the developing H.266. In addition, at the 14th JVET meeting, a matrix-based intra prediction (MIP) mode was proposed in the JVET-N0217 proposal. Intra prediction is mainly performed using the samples at the upper end and the left end of the current block.
[0004] Intra prediction is related to the most probable mode (MPM) list, which may include multiple (e.g., 3 or 5) intra prediction modes that are most likely to be used for the current block. The MPM list may be applied to MIP. Specifically, the MPM list is constructed based on the intra prediction modes of adjacent blocks.
[0005] However, in the existing intra prediction method, in order to construct the MPM list, it is necessary to perform conversion between MIP and another intra prediction mode based on the correspondence between MIP and another intra prediction mode. As a result, the complexity increases. Summary of the Invention
[0006] Embodiments of the present application provide a method for constructing an MPM list, a method for obtaining an intra prediction mode of a chroma block, and an apparatus to reduce the complexity of the MPM list configuration.
Means for Solving the Problem
[0007] According to a first aspect, an embodiment of the present application is a method for constructing an MPM list, wherein the MIP mode is used for the current block, and the method includes: obtaining intra prediction mode information of an adjacent block, where the adjacent block includes an upper adjacent block and / or a left adjacent block of the current block; determining whether the intra prediction mode of the adjacent block is the MIP mode based on the intra prediction mode information of the adjacent block; if the intra prediction mode of the adjacent block is not the MIP mode, skipping using the intra prediction mode of the adjacent block in the MPM list configuration of the current block, or if the intra prediction mode of the adjacent block is the MIP mode, using the intra prediction mode of the adjacent block in the MPM list configuration of the current block. The MIP mode is a newly added intra prediction technology of VVC. Intra prediction is mainly performed using samples at the upper end and the left end of the current block. To predict samples of a rectangular block with a width of W and a height of H, H columns of reconstructed adjacent samples on the left side of the rectangular block and W rows of reconstructed adjacent samples above the rectangular block are used as inputs to the MIP mode. If the reconstructed adjacent samples are unavailable, samples are generated as in conventional intra prediction. A prediction signal is generated based on three steps of averaging, matrix-vector multiplication, and linear interpolation.
[0008] In the implementation of this embodiment, when the MIP mode is used for the current block, if the intra prediction mode of the adjacent block is not the MIP mode, the intra prediction mode of the adjacent block is not used in the MPM list configuration of the current block, so the complexity of the MPM list configuration can be reduced.
[0009] In a possible implementation manner, the step of skipping using the intra prediction mode of the adjacent block in the MPM list configuration of the current block includes the step of setting the intra prediction mode of the adjacent block as unavailable.
[0010] In a possible implementation manner, the method further includes the step of setting the value of candMipModeX to -1 to indicate that the intra prediction mode of the adjacent block is not used in the MPM list configuration of the current block.
[0011] In a possible implementation manner, the method further includes the step of using the default mode in the MPM list configuration of the current block if the intra prediction mode of the adjacent block is not the MIP mode.
[0012] In a possible implementation manner, if the intra prediction mode of the adjacent block is the MIP mode, the step of using the intra prediction mode of the adjacent block in the MPM list configuration of the current block includes the step of determining whether the size index of the current block and the adjacent block is the same if the intra prediction mode of the adjacent block is the MIP mode, and if the size index of the current block and the adjacent block is different, the step of skipping using the intra prediction mode of the adjacent block in the MPM list configuration of the current block, or if the size index of the current block and the adjacent block is the same, the step of using the intra prediction mode of the adjacent block in the MPM list configuration of the current block.
[0013] In a possible implementation manner, the method further includes the step of obtaining the intra prediction mode of the adjacent block based on the intra prediction mode information of the adjacent block.
[0014] In a possible implementation, the step of determining whether the intra prediction mode of an adjacent block is the MIP mode based on the intra prediction mode information of the adjacent block is a step of determining whether the intra prediction mode of the adjacent block is the MIP mode based on the flag MIP_FLAG, and includes a step in which the intra prediction mode information of the adjacent block includes MIP_FLAG.
[0015] According to a second aspect, an embodiment of the present application is a method of constructing an MPM list, in which the MIP mode is not used for a current block, and the method includes: a step of obtaining intra prediction mode information of an adjacent block, where the adjacent block includes an upper adjacent block and / or a left adjacent block of the current block; a step of determining whether the intra prediction mode of the adjacent block is the MIP mode based on the intra prediction mode information of the adjacent block; and a step of skipping using the intra prediction mode of the adjacent block in constructing the MPM list of the current block if the intra prediction mode of the adjacent block is the MIP mode, or a step of using the intra prediction mode of the adjacent block in constructing the MPM list of the current block if the intra prediction mode of the adjacent block is not the MIP mode.
[0016] In the implementation of this embodiment, when the MIP mode is not used for the current block, if the intra prediction mode of the adjacent block is the MIP mode, the intra prediction mode of the adjacent block is not used in constructing the MPM list of the current block, so that the complexity of constructing the MPM list can be reduced.
[0017] In a possible implementation, the step of skipping using the intra prediction mode of the adjacent block in constructing the MPM list of the current block includes a step of setting the intra prediction mode of the adjacent block as unavailable.
[0018] In a possible implementation, the method further includes setting the value of candIntraPredModeX to -1 to indicate that the intra prediction mode of an adjacent block is not used in the MPM list construction of the current block.
[0019] In a possible implementation, the method further includes using a default mode in the MPM list construction of the current block if the intra prediction mode of the adjacent block is the MIP mode.
[0020] In a possible implementation, the method further includes obtaining the intra prediction mode of the adjacent block based on the intra prediction mode information of the adjacent block.
[0021] In a possible implementation, the step of determining whether the intra prediction mode of the adjacent block is the MIP mode based on the intra prediction mode information of the adjacent block is a step of determining whether the intra prediction mode of the adjacent block is the MIP mode based on the flag MIP_FLAG, where the intra prediction mode information of the adjacent block includes the MIP_FLAG.
[0022] According to a third aspect, an embodiment of the present application provides a method for obtaining the intra prediction mode of a chroma block, and the method includes: obtaining the intra prediction mode of a luma block, where the luma block is the luma block corresponding to the current chroma block; determining whether the intra prediction mode of the luma block is the MIP mode; and if the intra prediction mode of the luma block is not the MIP mode, using the intra prediction mode of the luma block as the intra prediction mode of the current chroma block, or if the intra prediction mode of the luma block is the MIP mode, using the default mode as the intra prediction mode of the chroma block.
[0023] For the current chroma block, the intra prediction mode of the luma block covering the central position of the current chroma block is directly inherited. Specifically, the same intra prediction mode as the luma component is selected for the chroma component. This is the intra prediction mode acquisition method used when a derived mode (DM) is used for the chroma block. In the present application, based on the DM mode, when the MIP mode is added to the luma block, if the intra prediction mode of the luma block is not the MIP mode, the intra prediction mode of the luma block is used as the intra prediction mode of the current chroma block, or if the intra prediction mode of the luma block is the MIP mode, the default mode is used as the intra prediction mode of the current chroma block. Therefore, the complexity of obtaining the intra prediction mode of the chroma block can be reduced.
[0024] In a possible embodiment, the default mode includes the Planar mode or the DC mode.
[0025] According to a fourth aspect, an embodiment of the present application provides an intra prediction apparatus, where the MIP mode is used for the current block, and the apparatus includes an acquisition module configured to acquire intra prediction mode information of an adjacent block, where the adjacent block includes an upper adjacent block and / or a left adjacent block of the current block, a determination module configured to determine whether the intra prediction mode of the adjacent block is the MIP mode based on the intra prediction mode information of the adjacent block, and a processing module configured not to use the intra prediction mode of the adjacent block in the MPM list configuration of the current block if the intra prediction mode of the adjacent block is not the MIP mode, or to use the intra prediction mode of the adjacent block in the MPM list configuration of the current block if the intra prediction mode of the adjacent block is the MIP mode.
[0026] In a possible embodiment, the processing module is specifically configured to disable the use of the intra prediction mode of adjacent blocks.
[0027] In a possible embodiment, the processing module is further configured to set the value of candMipModeX to -1 to indicate that the intra prediction mode of adjacent blocks is not used in the current block's MPM list configuration.
[0028] In a possible embodiment, if the intra prediction mode of adjacent blocks is not the MIP mode, the processing module is further configured to use the default mode in the current block's MPM list configuration.
[0029] In a possible embodiment, if the intra prediction mode of adjacent blocks is the MIP mode, the processing module is specifically configured to determine whether the size index of the current block is the same as that of the adjacent block. If the size index of the current block is different from that of the adjacent block, the intra prediction mode of the adjacent block is not used in the current block's MPM list configuration. If the size index of the current block is the same as that of the adjacent block, the intra prediction mode of the adjacent block is used in the current block's MPM list configuration.
[0030] In a possible embodiment, the acquisition module is further configured to acquire the intra prediction mode of adjacent blocks based on the intra prediction mode information of adjacent blocks.
[0031] In a possible embodiment, the determination module is specifically configured to determine whether the intra prediction mode of adjacent blocks is the MIP mode based on the flag MIP_FLAG. The intra prediction mode information of adjacent blocks includes MIP_FLAG.
[0032] According to a fifth aspect, an embodiment of the present application provides an intra prediction apparatus. The MIP mode is not used for the current block. The apparatus includes An acquisition module configured to acquire intra prediction mode information of adjacent blocks, where the adjacent blocks include the upper adjacent block and / or the left adjacent block of the current block, an acquisition module, a determination module configured to determine whether the intra prediction mode of the adjacent block is the MIP mode based on the intra prediction mode information of the adjacent block, and if the intra prediction mode of the adjacent block is the MIP mode, the processing module is configured not to use the intra prediction mode of the adjacent block in the MPM list configuration of the current block, or if the intra prediction mode of the adjacent block is not the MIP mode, the processing module is configured to use the intra prediction mode of the adjacent block in the MPM list configuration of the current block.
[0033] In a possible implementation, the processing module is specifically configured to set the intra prediction mode of the adjacent block to be unavailable.
[0034] In a possible implementation, the processing module is further configured to set the value of candIntraPredModeX to -1 to indicate that the intra prediction mode of the adjacent block is not used in the MPM list configuration of the current block.
[0035] In a possible implementation, if the intra prediction mode of the adjacent block is the MIP mode, the processing module is further configured to use the default mode in the MPM list configuration of the current block.
[0036] In a possible implementation, the acquisition module is further configured to acquire the intra prediction mode of the adjacent block based on the intra prediction mode information of the adjacent block.
[0037] In a possible implementation, the determination module is specifically configured to determine whether the intra prediction mode of the adjacent block is the MIP mode based on the flag MIP_FLAG, and the intra prediction mode information of the adjacent block includes MIP_FLAG.
[0038] According to a sixth aspect, an embodiment of the present application provides an intra prediction apparatus, which includes: an acquisition module configured to acquire an intra prediction mode of a luma block, where the luma block is a luma block corresponding to a current chroma block; a determination module configured to determine whether the intra prediction mode of the luma block is the MIP mode; and a processing module configured to use the intra prediction mode of the luma block as the intra prediction mode of the current chroma block if the intra prediction mode of the luma block is not the MIP mode, or use a default mode as the intra prediction mode of the chroma block if the intra prediction mode of the luma block is the MIP mode.
[0039] In a possible embodiment, the default mode includes a Planar mode or a DC mode.
[0040] According to a seventh aspect, an embodiment of the present application provides a video codec, which is configured to encode / decode an image block and includes an intra prediction apparatus according to any one of the fourth to sixth aspects, configured to determine a prediction mode of a current block based on a configured MPM list of the current block, and then determine a predicted pixel value of the current block based on the prediction mode; and a reconstruction module configured to reconstruct the current block based on the predicted pixel value.
[0041] According to an eighth aspect, an embodiment of the present application provides a video encoding device. The video encoding device includes a non-volatile memory and a processor coupled to each other. The processor calls a program code stored in the memory to execute a method according to any one of the first to third aspects.
[0042] To construct the MPM list, compared with the existing intra prediction method that needs to perform conversion between MIP and another intra prediction based on the correspondence between MIP and another intra prediction, in the embodiments of the present application, if several conditions are satisfied, the intra prediction mode of the adjacent block does not need to be used for the current block's MPM list construction. As a result, the conversion based on the correspondence between MIP and another intra prediction mode can be avoided, and the complexity of the MPM list construction can be reduced.
[0043] To more clearly explain the technical solutions in the embodiments of the present application or the background art, hereinafter, the accompanying drawings for explaining the embodiments of the present application or the background art will be described.
Brief Description of the Drawings
[0044]
Figure 1A
Figure 1B
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7A
Figure 7B
Figure 8
Figure 9
Figure 10
Embodiments for Carrying Out the Invention
[0045] Hereinafter, embodiments of the present application will be described with reference to the accompanying drawings of the embodiments of the present application. In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and, by way of illustration, show specific aspects of the embodiments of the present application, or specific aspects in which the embodiments of the present application may be used. It should be understood that the embodiments of the present application may be used in other aspects and may include structural or logical changes not depicted in the accompanying drawings. Accordingly, the following detailed description is not to be understood in a limiting sense, and the scope of the present application is defined by the appended claims. For example, it should be understood that combinations of the disclosed content and the described method may also apply to corresponding devices or systems configured to perform this method, and vice versa. For example, if one or more specific method steps are described, the corresponding device may include one or more units, such as functional units (e.g., one unit that performs one or more steps, or multiple units that each perform one or more of the multiple steps), even if such one or more units are not explicitly described or shown in the accompanying drawings. In addition, for example, if a specific device is described based on one or more units, such as functional units, the corresponding method may include steps used to implement the functions of the one or more units (e.g., one step used to implement the functions of one or more units, or multiple steps each used to implement one or more of the functions of the multiple units), even if such one or more steps are not explicitly described or shown in the accompanying drawings. Furthermore, it should be understood that, unless otherwise specified, the features of the examples and / or aspects of the various embodiments described in this specification may be combined with each other.
[0046] The technical solutions in the embodiments of the present application are applicable not only to existing video coding standards (such as standards like H.264 and HEVC), but also to future video coding standards (such as the H.266 standard). The terms used in the embodiments of the present application are only used to explain specific embodiments of the present application and are not intended to limit the present application. First, some concepts that may be used in the embodiments of the present application will be briefly described below.
[0047] Video coding generally refers to the processing of a sequence of images, and the sequence of images forms a video or video sequence. In the field of video coding, the terms "picture", "frame", and "image" may be used synonymously. Video coding in this specification refers to video encoding or video decoding. Video encoding is performed on the sender side and typically includes processing the original video (e.g., by compression) to reduce the amount of data representing the video for more efficient storage and / or transmission. Video decoding is performed on the receiver side and typically includes performing the reverse process on the encoder to reconstruct the video. The "coding" of video in the embodiments should be understood as the "encoding" or "decoding" of a video sequence. The combination of the encoding part and the decoding part is also called coding (encoding and decoding).
[0048] A video sequence includes a series of pictures, which are further divided into slices, and the slices are further divided into blocks. Video coding is performed block by block. In some new video coding standards, the concept of "block" has been further extended. For example, the H.264 standard has introduced macroblocks (MBs). A macroblock may be further partitioned into multiple prediction blocks that can be used for predictive coding. In the High Efficiency Video Coding (HEVC) standard, basic concepts such as "coding unit" (CU), "prediction unit" (PU), and "transform unit" (TU) are used. Through functional partitioning, multiple types of block units are obtained and described using a new tree structure. For example, a CU can be divided into smaller CUs based on a quadtree, and the smaller CUs can be further divided to generate a quadtree structure. A CU is the basic unit for dividing and encoding a coded picture. PUs and TUs also have a similar tree structure. A PU may correspond to a prediction block and is the basic unit for predictive coding. A CU is further divided into multiple PUs in a partitioning mode. A TU may correspond to a transform block and is the basic unit for transforming the prediction residue. However, essentially, CUs, PUs, and TUs are all conceptual blocks (or called picture blocks).
[0049] For example, in HEVC, a CTU is divided into a plurality of CUs using a quadtree structure represented as a coding tree. The decision of whether to encode an image area using inter (temporal) prediction or intra (spatial) prediction is made at the CU level. Each CU may be further divided into one, two, or four PUs based on a PU partitioning pattern. The same prediction process is applied to one PU, and related information is transmitted to the decoder in PU units. After a residual block is obtained by applying a prediction process based on a PU partitioning pattern, the CU may be divided into transform units (TUs) based on another quadtree structure similar to the coding tree used for the CU. In recent developments of video compression technology, a quad-tree and binary tree (QTBT) partitioning frame is used to divide a coding block. In the QTBT block structure, the CU may be square or rectangular.
[0050] In this specification, for simplicity of description and understanding, an image block to be coded in a current coded image may be referred to as a current block. For example, in coding, the current block is the block being coded, and in decoding, the current block is the block being decoded. A decoded image block in a reference image used for prediction of the current block is referred to as a reference block. Specifically, the reference block is a block that provides a reference signal for the current block, and the reference signal represents pixel values within the image block. A block that is within the reference image and provides a prediction signal for the current block may be referred to as a prediction block. The prediction signal represents pixel values, sampling values, or sampling signals within the prediction block. For example, after traversing a plurality of reference blocks, an optimal reference block is found. The optimal reference block provides a prediction for the current block, and this block is referred to as a prediction block.
[0051] In the case of reversible video coding, the original video can be reconstructed. Specifically, the reconstructed video has the same quality as the original video (assuming no transmission loss or other data loss occurs during storage or transmission). In the case of irreversible video coding, in order to reduce the amount of data representing the video, further compression is performed, for example, by quantization, but the video cannot be completely reconstructed on the decoder side. Specifically, the quality of the reconstructed video is lower, or worse, than the original video.
[0052] Some H.261 video coding standards are for "irreversible hybrid video coding" (specifically, spatial prediction and temporal prediction in the sample area are combined with 2D transform coding for applying quantization in the transform area). Each image of the video sequence is usually divided into a set of non-overlapping blocks, and the coding is usually performed at the block level. Specifically, on the encoder side, the video is usually processed, i.e., encoded, at the block (video block) level. For example, prediction blocks are generated by spatial (intra) prediction and temporal (inter) prediction, the prediction blocks are subtracted from the current block (the block being processed or to be processed) to obtain a residual block, and the residual block is transformed and quantized (compressed) in the transform area to reduce the amount of data to be transmitted. On the decoder side, the inverse processing part for the encoder is applied to the encoded block, or the compressed block, in order to reconstruct the current block for display. Further, the encoder duplicates the processing loop of the decoder, whereby the encoder and the decoder generate the same prediction (e.g., intra prediction and inter prediction) and / or reconstruction for processing, i.e., coding, subsequent blocks.
[0053] Hereinafter, the system architecture to which the embodiments of the present application are applied will be described. FIG. 1A is a schematic block diagram of an example of a video encoding and decoding system 10 to which an embodiment of the present application is applied. As shown in FIG. 1A, the video encoding and decoding system 10 includes a source device 12 and a destination device 14. The source device 12 generates encoded video data, and thus the source device 12 may be referred to as a video encoding device. The destination device 14 decodes the encoded video data generated by the source device 12, and thus the destination device 14 may be referred to as a video decoding device. In various implementation solutions, the source device 12, the destination device 14, or both the source device 12 and the destination device 14 may include one or more processors and a memory coupled to the one or more processors. As described herein, the memory may include, but is not limited to, RAM, ROM, EEPROM, flash memory, or any other medium that can be used to store the desired program code in the form of computer-accessible instructions or data structures. The source device 12 and the destination device 14 may include various devices including desktop computers, mobile computing devices, notebook (e.g., laptop) computers, tablet computers, set-top boxes, telephone handsets such as so-called "smart" phones, televisions, cameras, display devices, digital media players, video game consoles, in-vehicle computers, wireless communication devices, and the like.
[0054] FIG. 1A shows the source device 12 and the destination device 14 as separate devices, but alternative embodiments of the devices may instead include both the source device 12 and the destination device 14, or the functions of both the source device 12 and the destination device 14, i.e., may include the source device 12 or corresponding functions and the destination device 14 or corresponding functions. In such embodiments, the source device 12 or corresponding functions and the destination device 14 or corresponding functions may be implemented using the same hardware and / or software, separate hardware and / or software, or any combination thereof.
[0055] The communication connection between the source device 12 and the destination device 14 may be implemented by a link 13, and the destination device 14 may receive the encoded video data from the source device 12 via the link 13. The link 13 may include one or more media or devices capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, the link 13 may include one or more communication media that enable the source device 12 to directly transmit the encoded video data to the destination device 14 in real time. In this example, the source device 12 may modulate the encoded video data according to a communication standard (e.g., a wireless communication protocol) and transmit the modulated video data to the destination device 14. The one or more communication media may include wireless communication media and / or wired communication media, such as a radio frequency (RF) band or one or more physical transmission cables. The one or more communication media may be part of a packet-based network, which may be, for example, a local area network, a wide area network, or a global network (such as the Internet). The one or more communication media may include a router, a switch, a base station, or another device that facilitates communication from the source device 12 to the destination device 14.
[0056] The source device 12 includes an encoder 20. Optionally, the source device 12 may further include an image source 16, an image preprocessor 18, and a communication interface 22. In a specific embodiment, the encoder 20, the image source 16, the image preprocessor 18, and the communication interface 22 may be hardware components within the source device 12, or software programs within the source device 12. The descriptions are given individually as follows.
[0057] The image source 16 may include, for example, any type of image capture device configured to capture real-world images, and / or any type of device for generating images or comments (in the case of screen content encoding, some text on the screen may also be considered part of the image or image to be encoded), such as a computer graphics processor configured to generate computer animation images, or any type of device configured to obtain and / or provide real-world images or computer animation images (such as screen content or virtual reality (VR) images), and / or any combination thereof (such as augmented reality (AR) images). The image source 16 may be a camera configured to capture images, or a memory configured to store images. The image source 16 may further include any type of (internal or external) interface through which previously captured or generated images are stored, and / or through which images are obtained or received. When the image source 16 is a camera, the image source 16 may be, for example, a local camera or an integrated camera integrated into the source device. When the image source 16 is a memory, the image source 16 may be a local memory or, for example, an integrated memory integrated into the source device. When the image source 16 includes an interface, the interface may be, for example, an external interface for receiving images from an external video source. The external video source may be, for example, an external image capture device such as a camera, an external memory, or an external image generation device. The external image generation device may be, for example, an external computer graphics processor, a computer, or a server. The interface may be any type of interface compliant with a dedicated or standardized interface protocol, such as a wired or wireless interface or an optical interface.
[0058] An image can be regarded as a two-dimensional array or matrix of picture elements. The picture elements within the array can also be called samples. The number of samples in the horizontal and vertical directions (or axes) of the array or image defines the size and / or resolution of the image. For color representation, usually three color components are used. Specifically, an image may be represented as three sample arrays or may include three sample arrays. For example, RGB In a format or color space, an image includes corresponding red, green, and blue sample arrays. However, in video coding, each pixel is usually represented in a luma / chroma format or color space. For example, an image in the YUV format includes a luma component denoted by Y (or sometimes denoted by L) and two chroma components denoted by U and V. The luminance component Y represents luminance or gray-level intensity (e.g., they are the same in a grayscale image), and the two chrominance components U and V represent chrominance components or color information components. Correspondingly, an image in the YUV format includes a luma sample array of luma sample values (Y) and two chroma sample arrays of chroma values (U and V). An image in the RGB format may be converted or replaced with the YUV format, and vice versa. This process is also referred to as color substitution or conversion. If an image is monochrome, the image may include only a luma sample array. In this embodiment of the present application, the image transmitted by the image source 16 to the image processor may be called raw image data 17.
[0059] The image pre-processor 18 is configured to perform pre-processing on the raw image data 17 in order to receive the raw image data 17 and obtain a pre-processed image 19 or pre-processed image data 19. For example, the pre-processing performed by the image pre-processor 18 may include trimming, color format conversion (e.g., conversion from the RGB format to the YUV format), color correction, or noise removal.
[0060] The coder 20 (also referred to as the video coder 20) is configured to process the pre-processed image data 19 in a related prediction mode (such as the prediction mode in the embodiments of this specification) in order to receive the pre-processed image data 19 and provide the encoded image data 21. (The details of the structure of the coder 20 will be further described below with reference to FIGS. 2, 4, or 5). In some embodiments, the coder 20 may be configured to execute various embodiments described below in order to implement the coder-side application of the chroma block prediction method described in this application.
[0061] The communication interface 22 is configured to receive the encoded image data 21 and transmit the encoded image data 21 to the destination device 14, or any other device (such as a memory) via the link 13 for storage or direct reconstruction. The other device may be any device used for decoding or storage. The communication interface 22 may be configured to encapsulate the encoded image data 21 into an appropriate format, such as a data packet, for transmission via the link 13.
[0062] The destination device 14 includes a decoder 30. Optionally, the destination device 14 may further include a communication interface 28, an image post-processor 32, and a display device 34. The descriptions are given separately as follows.
[0063] The communication interface 28 may be configured to receive the encoded image data 21 from the source device 12 or any other arbitrary source. Any other arbitrary source may be, for example, a storage device. The storage device may be, for example, an encoded image data storage device. The communication interface 28 may be configured to transmit or receive the encoded image data 21 via the link 13 between the source device 12 and the destination device 14, or any type of network. The link 13 may be, for example, a direct wired connection or a wireless connection. 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. The communication interface 28 may be configured to decapsulate the data packets transmitted via the communication interface 22 in order to obtain, for example, the encoded image data 21.
[0064] Both the communication interface 28 and the communication interface 22 may be configured as either a unidirectional communication interface or a bidirectional communication interface, and may be configured to, for example, send and receive messages to establish a connection and to check and exchange any other information related to data transmission such as the transmission of the communication link and / or the encoded image data.
[0065] The decoder 30 (also referred to as the video decoder 30) is configured to receive the encoded image data 21 and supply the decoded image data 31, that is, the decoded image 3 31 (the structural details of the decoder 30 will be further described below based on FIGS. 3, 4, or 5). In some embodiments, the decoder 30 may be configured to execute various embodiments described below in order to implement the decoder-side application of the chroma block prediction method described in this application.
[0066] The image post-processor 32 is configured to post-process the decoded image data 31 (also referred to as the reconstructed image data) in order to obtain the post-processed image data 33. The post-processing performed by the image post-processor 32 may include color format conversion (e.g., conversion from the YUV format to the RGB format), color correction, trimming, resampling, or any other processing. The image post-processor 32 may be further configured to send the post-processed image data 33 to the display device 34.
[0067] The display device 34 is configured to receive the post-processed image data 33, for example, to display an image to a user or viewer. The display device 34 can be or can include any type of display that presents a reconstructed image, such as an integrated or external display or monitor. For example, displays include liquid crystal displays (LCDs), organic light emitting diode (OLED) displays, plasma displays, projectors, micro LED displays, liquid crystal on silicon (LCoS), digital light processors (DLPs), or any other type of display.
[0068] FIG. 1A shows the source device 12 and the destination device 14 as separate devices, but alternative embodiments of the devices may instead include both the source device 12 and the destination device 14, or the functions of both the source device 12 and the destination device 14, i.e., the source device 12 or corresponding functions and the destination device 14 or corresponding functions. In such embodiments, the source device 12 or corresponding functions and the destination device 14 or corresponding functions may be implemented using the same hardware and / or software, separate hardware and / or software, or any combination thereof.
[0069] Based on the description, those skilled in the art can clearly understand that the functions of different units, or the presence and (exact) division of the functions of the source device 12 and / or the destination device 14 shown in FIG. 1A, may vary depending on the actual devices and applications. The source device 12 and the destination device 14 can be any type of handheld device or fixed device, such as a notebook or laptop computer, mobile phone, smartphone, tablet or tablet computer, video camera, desktop computer, set-top box, television, camera, in-vehicle device, display device, digital media player, video game console, video streaming device (such as a content service server or content delivery server), broadcast receiving device, or broadcast transmitting device, and may use any type of operating system or not.
[0070] The encoder 20 and the decoder 30 can each be implemented as any of a variety of suitable circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof. If the technology is implemented in part using software, the device may store software instructions in a suitable non-transitory computer-readable storage medium, and may execute the instructions by using hardware such as one or more processors to perform the technology disclosed herein. Any of the foregoing (including hardware, software, a combination of hardware and software, etc.) may be regarded as one or more processors.
[0071] In some cases, the video encoding and decoding system 10 shown in FIG. 1A is merely an example, and the technology of this application may be applied to video encoding settings (for example, video encoding or video decoding) that do not necessarily include any data communication between the encoding device and the decoding device. In another example, the data may be obtained from local memory, streamed over a network, etc. The video encoding device may encode the data and store the data in memory, and / or the video decoding device may obtain the data from memory and decode the data. In some examples, only devices that encode data, store the data in memory, and / or search for data in memory, decode the data, and do not communicate with each other perform encoding and decoding.
[0072] FIG. 1B is a diagram schematically showing an example of a video encoding system 40 including the encoder 20 of FIG. 2 and / or the decoder 30 of FIG. 3 according to an exemplary embodiment. The video encoding system 40 can implement combinations of various technologies in the embodiments of this application. In the illustrated embodiment, the video encoding system 40 may include an imaging device 41, an encoder 20, a decoder 30 (and / or a video encoder / decoder implemented by the logic circuit 47 of the processing unit 46), an antenna 42, one or more processors 43, one or more memories 44, and / or a display device 45.
[0073] As shown in FIG. 1B, the imaging device 41, the antenna 42, the processing unit 46, the logic circuit 47, the encoder 20, the decoder 30, the processor 43, the memory 44, and / or the display device 45 can communicate with each other. As described, the video encoding system 40 is shown with an encoder 20 and a decoder 30, but in different examples, the video encoding system 40 may include only the encoder 20 or only the decoder 30.
[0074] In some examples, the antenna 42 may be configured to transmit or receive an encoded bitstream of video data. Additionally, in some examples, the display device 45 may be configured to present video data. In some examples, the logic circuit 47 may be implemented by the processing unit 46. The processing unit 46 may include, for example, application-specific integrated circuit (ASIC) logic, a graphics processor, a general-purpose processor, and the like. The video encoding system 40 may also include an optional processor 43. The optional processor 43 may similarly include application-specific integrated circuit (ASIC) logic, a graphics processor, a general-purpose processor, and the like. In some examples, the logic circuit 47 may be implemented by hardware such as video encoding dedicated hardware. The processor 43 may be implemented by general-purpose software, an operating system, and the like. Additionally, the memory 44 may be any type of memory, for example, volatile memory (e.g., Static Random Access Memory (SRAM) or Dynamic Random Access Memory (DRAM)) or non-volatile memory (e.g., flash memory). By way of non-limiting example, the memory 44 may be implemented by cache memory. In some examples, the logic circuit 47 may access the memory 44 (e.g., to implement an image buffer). In another example, the logic circuit 47 and / or the processing unit 46 may include a memory (e.g., a cache) to implement an image buffer.
[0075] In some examples, the encoder 20 implemented using logic circuitry may include an image buffer (e.g., implemented by the processing unit 46 or the memory 44) and a graphics processing unit (e.g., implemented by the processing unit 46). The graphics processing unit may be communicatively coupled to the image buffer. The graphics processing unit may include the encoder 20 implemented using logic circuitry 47 to implement 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.
[0076] In some examples, the decoder 30 may also be implemented similarly by the logic circuitry 47 to implement various modules described with reference to the decoder 30 of FIG. 3 and / or any other decoder system or subsystem described herein. In some examples, the decoder 30 implemented using logic circuitry may include an image buffer (implemented by the processing unit 46 or the memory 44) and a graphics processing unit (e.g., implemented by the processing unit 46). The graphics processing unit may be communicatively coupled to the image buffer. The graphics processing unit may include the decoder 30 implemented using logic circuitry 47 to implement various modules described with reference to FIG. 3 and / or any other decoder system or subsystem described herein.
[0077] In some examples, the antenna 42 may be configured to receive an encoded bitstream of video data. As described, the encoded bitstream is related to video frame encoding and may include data, indicators, index values, mode selection data, etc. described herein, for example, data related to coded partitioning (e.g., transform coefficients or quantized transform coefficients, optional indicators (as described), and / or data defining the coded partitioning). The video encoding system 40 may further include a decoder 30 coupled to the antenna 42 and configured to decode the encoded bitstream. The display device 45 is configured to present video frames.
[0078] In this embodiment of the present application, it should be understood that for the examples described with reference to the encoder 20, the decoder 30 may be configured to perform the reverse process. Regarding the signaling of syntax elements, the decoder 30 may be configured to receive and parse such syntax elements and, correspondingly, decode the associated video data. In some examples, the encoder 20 may entropy-encode the syntax elements into the encoded video bitstream. In such examples, the decoder 30 may parse the syntax elements and decode the associated video data accordingly.
[0079] It should be noted that the method of constructing the MPM list and the method of obtaining the intra prediction mode of the chroma block according to the embodiments of the present application are mainly used in the intra prediction process. This process exists for both the encoder 20 and the decoder 30. In the embodiments of the present application, the encoder 20 and the decoder 30 are HEVC encoders and decoders corresponding to video standard protocols such as H.263, H.264, MPEG-2, MPEG-4, VP8, and VP9, or next-generation video standard protocols (e.g., H.266).
[0080] Figure 2 is a schematic / conceptual block diagram of an example of an encoder 20 according to an embodiment of the present application. In the example of Figure 2, the encoder 20 includes a residual calculation unit 204, a transformation processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transformation processing unit 212, a reconstruction unit 214, a buffer 216, a loop filter unit 220, a decoded picture buffer (DPB) 230, a prediction processing unit 260, and an entropy encoding unit 270. The prediction processing unit 260 may include an inter prediction unit 244, an intra prediction unit 254, and a mode selection unit 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown in the figure). The encoder 20 shown in Figure 2 may also be referred to as a video encoder based on a hybrid video encoder or a hybrid video codec.
[0081] For example, the residual calculation unit 204, the transformation processing unit 206, the quantization unit 208, the prediction processing unit 260, and the entropy encoding unit 270 form the forward signal path of the encoder 20, while, for example, the inverse quantization unit 210, the inverse transformation processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, and the prediction processing unit 260 form the reverse signal path of the encoder. The reverse signal path of the encoder corresponds to the signal path of the decoder (see decoder 30 in Figure 3).
[0082] The symbolizer 20 receives, for example, via the input 202, the image 201 or an image block 203 of the image 201, for example, an image within an image sequence forming a video or a video sequence. The image block 203 may also be referred to as the current image block or the image block to be encoded, and the image 201 may also be referred to as the current image or the image to be encoded (especially in video coding, to distinguish the current image from other images, for example, already encoded and / or decoded images within the same video sequence, i.e., the video sequence including the current image).
[0083] One embodiment of the symbolizer 20 may include a splitting unit (not depicted in FIG. 2) configured to split the image 201 into a plurality of blocks such as the image block 203. The image 201 is typically split into a plurality of non - overlapping blocks. The splitting unit may use the same block size for all images within the video sequence and the corresponding grid defining the block size, or may be configured to change the block size between images or subsets or groups of images to split each image into corresponding blocks.
[0084] In one example, the prediction processing unit 260 of the symbolizer 20 may be configured to perform any combination of the aforementioned splitting techniques.
[0085] Similar to the image 201, the image block 203 can also be regarded as, or can be regarded as, a two - dimensional array or matrix of samples having sample values, but the size of the image block 203 is smaller than the size of the image 201. In other words, the image block 203 may include, for example, one sample array (e.g., the luma array in the case of a monochrome image 201), three sample arrays (e.g., one luma array and two chroma arrays in the case of a color image), or any other quantity and / or type of array depending on the applied color format. The quantity of samples in the horizontal and vertical directions (or axes) of the image block 203 defines the size of the image block 203.
[0086] The coder 20 shown in FIG. 2 is configured to encode the image 201 block by block, for example, to perform encoding and prediction on each image block 203.
[0087] The residual calculation unit 204 is configured to calculate the residual block 205 based on the image block 203 and the prediction block 265 (further details regarding the prediction block 265 will be provided below), for example, by subtracting the sample values of the prediction block 265 from the sample values of the image block 203 for each sample (each pixel) in order to obtain the residual block 205 in the sample region.
[0088] 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 in order to obtain the transform coefficients 207 in the transform region. The transform coefficients 207 may be referred to as transform residual coefficients and represent the residual block 205 in the transform region.
[0089] The transform processing unit 206 may be configured to apply an integer approximation of DCT / DST, such as the transform defined in HEVC / H.265. Compared with the orthogonal DCT transform, such an integer approximation is usually scaled based on the coefficients. In order to maintain the norm of the residual block processed using the forward transform and the inverse transform, an additional scale factor is applied as part of the transform process. The scale factor is usually selected based on several constraints. For example, the scale factor is a power of 2 of a shift operation, the bit depth of the transform coefficients, and a trade-off between accuracy and implementation cost. For example, a specific scale factor is specified for the inverse transform by the inverse transform processing unit 212 etc. on the decoder 30 side (and is specified for the corresponding inverse transform by the inverse transform processing unit 212 etc. on the coder 20 side), and correspondingly, a scale factor corresponding to the forward transform may be specified by the transform processing unit 206 on the coder 20 side.
[0090] The quantization unit 208 is configured to quantize the transform coefficients 207, for example, by applying scalar quantization or vector quantization, to obtain quantized transform coefficients 209. The quantized transform coefficients 209 may also be referred to as quantized residual coefficients 209. The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, if n is greater than m, an n-bit transform coefficient may be rounded to an m-bit transform coefficient during quantization. The degree of quantization may be changed by adjusting the quantization parameter (QP). For example, in the case of scalar quantization, different scales 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, for example, an index to 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 a quantization step size and division by the corresponding quantization or inverse quantization performed, for example, by the inverse quantization unit 210, or may include multiplication by the quantization step size. In embodiments according to some standards such as HEVC, a quantization parameter may be used to determine the quantization step size. Generally, the quantization step size may be calculated based on the quantization parameter using a fixed-point approximation of an equation that includes division. Additional scale factors may be introduced for quantization and inverse quantization to restore the norm of the residual block, and the norm of the residual block may be changed due to the scale used in the equation for the quantization step size and the fixed-point approximation of the quantization parameter. In an exemplary embodiment, the scale of the inverse transform may be combined with the scale of the inverse quantization.Alternatively, a customized quantization table may be used and signaled, e.g., in a bit stream, from the encoder to the decoder. Quantization is a lossy operation, and a larger quantization step size indicates a larger loss.
[0091] The inverse quantization unit 210 is configured to apply the inverse quantization of the quantization unit 208 to the quantization coefficients in order to obtain inverse quantization coefficients 211, e.g., based on the same quantization step size or using this as the quantization unit 208, and is configured to apply an inverse quantization method of the quantization method applied by the quantization unit 208. The inverse quantization coefficients 211, also referred to as inverse quantization residual coefficients 211, may correspond to the transform coefficients 207, but the inverse quantization coefficients 211 are usually different from the transform coefficients caused by the loss resulting from quantization.
[0092] The inverse transform processing unit 212 is configured to apply an inverse transform of the transform applied by the transform processing unit 206, e.g., an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), in order to obtain an inverse transform block 213 of the sample region. The inverse transform block 213 may also be referred to as an inverse transform dequantization block 213 or an inverse transform residual block 213.
[0093] The reconstruction unit 214 (e.g., the adder 214) is configured to add the inverse transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265, e.g., by adding the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265, to obtain a reconstruction block 215 in the sample region.
[0094] Optionally, buffer unit 216 (also abbreviated as "buffer" 216), e.g., line buffer 216, is configured to buffer or store reconstruction block 215 and corresponding sample values, e.g., for intra prediction. In other embodiments, the coder may be configured to use unfiltered reconstruction blocks and / or corresponding sample values stored in buffer unit 216 for any type of estimation and / or prediction, e.g., intra prediction.
[0095] For example, in one embodiment, coder 20 is configured such that buffer unit 216 stores not only reconstruction block 215 used by intra prediction unit 254, but also reconstruction blocks (not shown in FIG. 2) used by loop filter unit 220, and / or, e.g., buffer unit 216 and decoded picture buffer 230 may be configured to form one buffer. In another embodiment, blocks or samples (not shown in FIG. 2) from filtered block 221 and / or decoded picture buffer 230 are used as input or basis for intra prediction unit 254.
[0096] The loop filter unit 220 (or simply referred to as the "loop filter" 220) is configured to filter the reconstruction block 215 to obtain a filtered block 221, smooth pixel shift, or improve video quality. The loop filter unit 220 is intended to represent one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or another filter such as a collaborative filter. The loop filter unit 220 is shown as an in-loop filter in FIG. 2, but in another configuration, the loop filter unit 220 can be implemented as a post filter. The filtered block 221 can also be referred to as the filtered reconstruction block 221. The decoded image buffer 230 can store the encoded block reconstructed after the loop filter unit 220 performs a filtering operation on the reconstructed encoded block.
[0097] In one embodiment, the encoder 20 (correspondingly, the loop filter unit 220) may be configured to output loop filter parameters (such as sample-adaptive offset information) directly or after entropy encoding performed by the entropy encoding unit 270 or any other entropy encoding unit, so that the decoder 30 can receive and apply the same loop filter parameters for decoding.
[0098] The decoded picture buffer (DPB) 230 may be a reference picture memory that stores reference picture data for the video data to be encoded by the encoder 20. The DPB 230 may include any one of various memory devices such as dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), or resistive RAM (RRAM)), or other types of memory devices. The DPB 230 and the buffer 216 may be provided by the same memory device or by separate memory devices. In one example, the decoded picture buffer (DPB) 230 is configured to store the filtered block 221. The decoded picture buffer 230 may be further configured to store other previously filtered blocks, such as the same current picture or a different picture, such as a previously reconstructed picture, previously reconstructed and filtered blocks 221, and may also provide, for example, for inter prediction, a fully previously reconstructed, i.e., decoded, picture (and corresponding reference blocks and samples) and / or a partially reconstructed current picture (and corresponding reference blocks and samples). In one example, when the reconstruction block 215 is reconstructed without in-loop filtering, the decoded picture buffer (DPB) 230 is configured to store the reconstruction block 215.
[0099] The prediction processing unit 260, also referred to as the block prediction processing unit 260, receives or acquires an image block 203 (the current image block 203 of the current image 201) as well as reconstructed image data, for example, reference samples of the same (current) image from the buffer 216 and / or reference image data 231 of one or more already decoded images from the decoded image buffer 230, and processes such data for prediction, that is, is configured to provide a prediction block 265 which may be an inter prediction block 245 or an intra prediction block 255.
[0100] The mode selection unit 262 may be configured to select a prediction mode (e.g., an intra or inter prediction mode) and / or a corresponding prediction block 245 or 255 to be used as the prediction block 265 for the calculation of the residual block 205 and the reconstruction of the reconstruction block 215.
[0101] In one embodiment, the mode selection unit 262 may be configured to select a prediction mode (from, e.g., the prediction modes supported by the prediction processing unit 260), where the prediction mode provides the best match or the minimum residual (the minimum residual means better compression for transmission or storage), or provides the minimum signaling overhead (the minimum signaling overhead means better compression for transmission or storage), or considers or balances both. The mode selection unit 262 may be configured to determine the prediction mode based on rate distortion optimization (RDO), that is, to select the prediction mode that results in the minimum rate distortion optimization, or to select a prediction mode whose associated rate distortion at least meets the prediction mode selection criteria.
[0102] Hereinafter, the prediction processing (e.g., executed by the prediction processing unit 260) and the mode selection (e.g., executed by the mode selection unit 262) performed by the encoder 20 example will be described in detail.
[0103] As described above, the coder 20 is configured to determine or select the best or optimal prediction mode from a set of (predetermined) prediction modes. The set of prediction modes may include, for example, an intra prediction mode and / or an inter prediction mode.
[0104] The set of intra prediction modes may include 35 different intra prediction modes, such as non-directional modes like the DC (or average) mode and the planar mode, or directional modes like the modes defined in H.265, or may include 67 different intra prediction modes, such as non-directional modes like the DC (or average) mode and the planar mode, or directional modes like the modes defined in the yet-to-be-released H.266.
[0105] In a possible implementation, the set of inter prediction modes depends on the available reference images (i.e., at least some of the decoded images stored in, for example, 230 as described above) and other inter prediction parameters. For example, it depends on whether the entire reference image or only a part of the reference image, such as the search window area around the area of the current block, is used to search for the optimal matching reference block, and / or depends on whether pixel interpolation such as 1 / 2 pixel interpolation and / or 1 / 4 pixel interpolation is applied. The set of inter prediction modes may include, for example, the Advanced Motion Vector Prediction (AMVP) mode and the merge mode. In a specific implementation, in the embodiments of the present application, the set of inter prediction modes may include the AMVP mode based on improved control points and the merge mode based on improved control points. In one example, the intra prediction unit 254 may be configured to perform any combination of the intra prediction techniques described below. DPB In the embodiments of the present application, in addition to the aforementioned prediction modes, the skip mode and / or the direct mode may also be used.
[0106]
[0107] The prediction processing unit 260 may be further configured to repeatedly use, for example, quad-tree (QT) partitioning, binary-tree (BT) partitioning, ternary-tree ( ternary -tree, TT) partitioning, or any combination thereof to divide the image block 203 into smaller block partitions or sub-blocks and perform predictions for each of the block partitions or sub-blocks, for example. Mode selection includes selection of the tree structure of the image block 203 to be divided and selection of the prediction mode used for each of the block partitions or sub-blocks.
[0108] The inter prediction unit 244 may include a motion estimation (ME) unit (not shown in FIG. 2) and a motion compensation (MC) unit (not shown in FIG. 2). The motion estimation unit is configured to receive or acquire, for motion estimation, the image block 203 (the current image block 203 of the current image 201) and the decoded image 231, or at least one or more already reconstructed blocks, for example, one or more reconstructed blocks of another / different already decoded image 231. For example, the video sequence may include the current image and a previously decoded image 2 31, or in other words, the current image and a previously decoded image 2 31 is part of or can form a sequence of images forming the video sequence.
[0109] For example, the encoder 20 may be configured to select one reference block from a plurality of reference blocks of the same or different images of a plurality of other images, provide the reference image to a motion estimation unit (not shown in FIG. 2), and / or provide the offset (spatial offset) between the position (coordinates x and y) of the reference block and the position of the current block as an inter prediction parameter. The offset is also referred to as a motion vector (MV).
[0110] The motion compensation unit is configured to obtain an inter prediction parameter, perform an inter prediction based on or using the inter prediction parameter, and obtain an inter prediction block 245. The motion compensation performed by the motion compensation unit (not shown in FIG. 2) may include fetching or generating a prediction block based on a motion / block vector determined by motion estimation (possibly performing interpolation at sub-picture accuracy). Interpolation filtering may generate additional pixel samples from known pixel samples, thereby potentially increasing the amount of candidate prediction blocks that may be used to encode an image block. When receiving a motion vector for the PU of the current image block, the motion compensation unit 246 may identify a prediction block indicated by the motion vector in the reference image list. The motion compensation unit 246 may further generate syntax elements associated with the block and the video slice for decoding the image block of the video slice by the decoder 30.
[0111] Specifically, the inter prediction unit 244 transmits syntax elements to the entropy encoding unit 270, and the syntax elements include inter prediction parameters (such as indication information for inter prediction mode selection used to predict the current block after traversing multiple inter prediction modes). In a possible application scenario, if there is only one inter prediction mode, the inter prediction parameter may alternatively not need to be carried by the syntax element. In this case, the decoder 30 may directly perform decoding in the default prediction mode. It will be understood that the inter prediction unit 244 may be configured to perform any combination of inter prediction techniques.
[0112] The intra prediction unit 254 is configured to obtain, for example, receive the image block 203 (the current image block) and one or more already reconstructed blocks of the same image for intra estimation, such as reconstructed adjacent blocks. For example, the encoder 20 may be configured to select one intra prediction mode from a plurality of (predetermined) intra prediction modes.
[0113] In one embodiment, the coder 20 may be configured to select an intra prediction mode according to an optimization criterion based on, for example, a minimum residual (e.g., an intra prediction mode that gives a prediction block 255 that is most similar to the current image block 203) or a minimum rate distortion.
[0114] The intra prediction unit 254 is further configured to determine an intra prediction block 255 based on, for example, the intra prediction parameters of the selected intra prediction mode. In either case, after selecting the intra prediction mode of the block, the intra prediction unit 254 is further configured to provide the entropy coding unit 270 with the intra prediction parameters, i.e., the information indicating the selected intra prediction mode for the block. In one example, the intra prediction unit 254 may be configured to perform any combination of intra prediction techniques.
[0115] Specifically, the intra prediction unit 254 transmits a syntax element to the entropy coding unit 270, and the syntax element includes intra prediction parameters (such as indication information of intra prediction mode selection used to predict the current block after traversing multiple intra prediction modes). In a possible application scenario, if there is only one intra prediction mode, the intra prediction parameters may alternatively not need to be carried by the syntax element. In this case, the decoder 30 may directly perform decoding in the default prediction mode.
[0116] The entropy encoding unit 270 is configured to apply (or not apply) an entropy coding algorithm or method (e.g., variable length coding (VLC) method, context adaptive VLC (CAVLC) method, arithmetic coding method, context adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy coding method or technique) to one or all of the quantized residual coefficients 209, inter prediction parameters, intra prediction parameters, and / or loop filter parameters, in order to obtain the encoded image data 21 that can be output via the output 272, for example, in the form of an encoded bitstream 21. The encoded bitstream may be transmitted to the video decoder 30, or may be archived for later transmission or capture by the video decoder 30. The entropy encoding unit 270 may be further configured to entropy encode other syntax elements for the currently encoded video slice.
[0117] Another structural variation of the video encoder 20 can be used to encode the video stream. For example, the non-transform-based encoder 20 can directly quantize the residual signal without the transform processing unit 206 for some blocks or frames. In other implementations, the encoder 20 may have a quantization unit 208 and an inverse quantization unit 210 that are combined into a single unit.
[0118] Specifically, in the embodiments of the present application, the coder 20 may be configured to implement a method for constructing an MPM list described in the following embodiments and a method for obtaining an intra prediction mode of a chroma block.
[0119] It should be understood that another structural variation of the video coder 20 can be used to encode a video stream. For example, for some image blocks or image frames, the video coder 20 may directly quantize the residual signal without the need for processing by the conversion processing unit 206, and correspondingly, the processing by the inverse conversion processing unit 212 is not required either. Alternatively, for some image blocks or image frames, the video coder 20 may not generate residual data, and correspondingly, the processing by the conversion processing unit 206, the quantization unit 208, the inverse quantization unit 210, and the inverse conversion processing unit 212 is not required. Alternatively, the video coder 20 may directly store the reconstructed image block as a reference block without the need for processing by the filter 220. Alternatively, the quantization unit 208 and the inverse quantization unit 210 of the video coder 20 may be combined. The loop filter 220 is optional. In addition, in the case of reversible compression coding, the conversion processing unit 206, the quantization unit 208, the inverse quantization unit 210, and the inverse conversion processing unit 212 are optional. It should be understood that in another application scenario, the inter prediction unit 244 and the intra prediction unit 254 may be selectively used.
[0120] FIG. 3 is a schematic / conceptual block diagram of an example of a decoder 30 configured to implement an embodiment of the present application. The video decoder 30 is configured to receive, for example, encoded image data (e.g., an encoded bitstream) 21 encoded by the coder 20 and obtain a decoded image 231. In the decoding process, the video decoder 30 receives video data from the video coder 20, e.g., an encoded video bitstream representing an image block of an encoded video slice and associated syntax elements.
[0121] In the example of FIG. 3, the 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., an adder 314), a buffer 316, a loop filter 320, a decoded image buffer 330, and a prediction processing unit 360. The prediction processing unit 360 may include an inter prediction unit 344, an intra prediction unit 354, and a mode selection unit 362. In some examples, the video decoder 30 may perform a decoding process that is substantially the reverse of the encoding process described with respect to the video encoder 20 of FIG. 2.
[0122] The entropy decoding unit 304 is configured to perform entropy decoding on the encoded image data 21 to obtain, for example, any one or all of the quantized coefficients 309 and / or decoded encoding parameters (not shown in FIG. 3), such as inter prediction parameters, intra prediction parameters, loop filter parameters, and / or another syntax element (decoded). The entropy decoding unit 304 is further configured to transfer the inter prediction parameters, intra prediction parameters, and / or another syntax element to the prediction processing unit 360. The video decoder 30 may receive syntax elements at the video slice level and / or the video block level.
[0123] The inverse quantization unit 310 may have the same function as the inverse quantization unit 210 The inverse transform processing unit 312 may have the same function as the inverse transform processing unit 212. The reconstruction unit 314 may have the same function as the reconstruction unit 214. The buffer 316 may have the same function as the buffer 216. The loop filter 320 may have the same function as the loop filter 220. The decoded image buffer 330 may have the same function as the decoded image buffer 230.
[0124] The 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. The prediction processing unit 360 is typically configured to perform block prediction and / or obtain a prediction block 365 from the encoded data 21, for example, receive or (explicitly or implicitly) obtain prediction-related parameters and / or information regarding a selected prediction mode from the entropy decoding unit 304.
[0125] When the video slice is encoded as an intra-coded (I) slice, the intra prediction unit 354 of the prediction processing unit 360 is configured to generate a prediction block 365 for the picture block of the current video slice based on the signaled intra prediction mode and the data of the previously decoded blocks of the current frame or picture. When the video frame is encoded into an inter-coded (i.e., B or P) slice, the inter prediction unit 344 (e.g., motion compensation unit) of the prediction processing unit 360 is configured to generate a prediction block 365 for the video block in the current video slice based on the motion vectors and other syntax elements received from the entropy decoding unit 304. In the case of inter prediction, the prediction block may be generated from one of the reference pictures within one of the reference picture lists. The video decoder 30 may configure the reference frame lists, i.e., list 0 and list 1, by using a default construction technique based on the reference pictures stored in the DPB 330.
[0126] The prediction processing unit 360 is configured to determine prediction information for a video block of the current video slice by parsing a motion vector and other syntax elements, and generate a prediction block for the currently decoded video block using the prediction information. In an example of the present application, the prediction processing unit 360 uses several received syntax elements to decode a video block within the current video slice, and determines a prediction mode (e.g., intra prediction or inter prediction) for encoding the video block within the video slice, an inter prediction slice type (e.g., B slice, P slice, GPB slice), configuration information of one or more of the images in the reference picture list for the slice, a motion vector of each inter-coded video block in the slice, an inter prediction state of each inter-coded video block in the slice, and other information. In another example of the present disclosure, the syntax elements received from the bitstream by the video decoder 30 include syntax elements within one or more of an adaptive parameter set (APS), a sequence parameter set (SPS), a picture parameter set (PPS), or a slice header.
[0127] The inverse quantization unit 310 can be configured to perform inverse quantization (i.e., dequantization) on the quantized transform coefficients provided in the bitstream and decoded by the entropy decoding unit 304. The inverse quantization process may include determining the degree of quantization to be applied and the degree of inverse quantization to be applied using the quantization parameters calculated by the video encoder 20 for each video block in the video slice.
[0128] The inverse transform processing unit 312 is configured to apply an inverse transform (e.g., inverse DCT, inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficients to generate a residual block within the pixel region.
[0129] The reconstruction unit 314 (e.g., adder 314) is configured to add the sample values of the reconstructed residual block 313 and the prediction block 365, for example, to add the inverse transform block 313 (i.e., the reconstructed residual block 313) to the prediction block 365 to obtain the reconstruction block 315 in the sample domain.
[0130] The loop filter unit 320 (during or after the coding loop) is configured to filter the reconstruction block 315 to obtain the filtered block 321 and is configured to smooth the pixel shift or improve the video quality. In one 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 a bilateral filter, an adaptive loop filter (ALF), a sharpening or smoothing filter, or another filter such as a collaborative filter. The loop filter unit 320 is shown as an in-loop filter in FIG. 3, but in another configuration, the loop filter unit 320 may be implemented as a post-filter.
[0131] Next, the decoded video block 321 within a given frame or image is stored in a decoded image buffer 330 that stores reference images used for subsequent motion compensation.
[0132] The decoder 30 is configured to output the decoded image 3 3 1 via the output 332, for example, for presentation to the user or for viewing by the user.
[0133] Another variation of the video decoder 30 can be used to decode the compressed bitstream. For example, the decoder 30 can generate an output video stream without the loop filter unit 320. For example, a non-transform-based decoder 30 can directly inverse-quantize the residual signal without the inverse transform processing unit 312 for some blocks or frames. In other implementations, the video decoder 30 may have an inverse quantization unit 310 and an inverse transform processing unit 312 that are combined into a single unit.
[0134] Specifically, in the embodiments of the present application, the decoder 30 is configured to implement the method of constructing the MPM list described in the following embodiments and the method of obtaining the intra prediction mode of the chroma block.
[0135] It should be understood that another structural variation of the video decoder 30 can be used to decode the encoded video stream. For example, the video decoder 30 can generate an output video stream without processing by the filter 320. Alternatively, for some image blocks or image frames, the entropy decoding unit 304 of the video decoder 30 does not obtain quantization coefficients by decoding, and correspondingly, the inverse quantization unit 310 and the inverse transform processing unit 312 do not need to perform processing. The loop filter 320 is optional. In addition, in the case of reversible compression encoding, the inverse quantization unit 310 and the inverse transform processing unit 312 are also optional. In another application scenario, the inter prediction unit and the intra prediction unit may be selectively used.
[0136] FIG. 4 is a schematic structural diagram of a video encoding device 400 (e.g., a video encoding device 400 or a video decoding device 400) according to an embodiment of the present application. The video encoding device 400 is suitable for implementing the embodiments described in this specification. In one embodiment, the video encoding device 400 can be a video decoder (e.g., the decoder 30 in FIG. 1A) or a video encoder (e.g., the encoder 20 in FIG. 1A). In another embodiment, the video encoding device 400 can be one or more components of the decoder 30 in FIG. 1A or the encoder 20 in FIG. 1A.
[0137] The video encoding device 400 includes an input port 410 and a receiving unit (Rx) 420 for receiving data, a processor, a logic unit, or a central processing unit (CPU) 430 for processing data, a transmitting unit (Tx) 440 and an output port 450 for transmitting data, and a memory 460 for storing data. The video encoding device 400 may further include optical / electrical conversion components and electro-optical (EO) components coupled to the input port 410, the receiving unit 420, the transmitting unit 440, and the output port 450 for optical signals or electrical signals to enter and exit.
[0138] Processor 430 is implemented by hardware and software. Processor 430 can be implemented as one or more CPU chips, cores (e.g., multi-core processors), FPGAs, ASICs, and DSPs. Processor 430 communicates with an input port 410, a receiving unit 420, a transmitting unit 440, an output port 450, and a memory 460. Processor 430 includes an encoding module 470 (e.g., an encoding module 470 or a decoding module 470). The encoding / decoding module 470 implements the embodiments disclosed herein to implement the chroma block prediction method provided in the embodiments of the present application. For example, the encoding / decoding module 470 performs, processes, or provides various encoding operations. Therefore, the encoding / decoding module 470 substantially improves the function of the video encoding device 400 and affects the conversion of the video encoding device 400 to different states. Alternatively, the encoding / decoding module 470 is implemented as instructions stored in the memory 460 and executed by the processor 430.
[0139] Memory 460 includes one or more disks, tape drives, and solid state drives, and is used as an overflow data storage device to store such programs when selected for execution and to store instructions and data read during program execution. Memory 460 can be volatile and / or non-volatile and can be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and / or static random access memory (SRAM).
[0140] FIG. 5 is a simplified block diagram of an apparatus 500 that can be used as one or both of the source device 12 and the destination device 14 of FIG. 1A according to an exemplary embodiment. The apparatus 500 can implement the technology of the present application. In other words, FIG. 5 is a schematic block diagram showing the implementation of an encoding device or a decoding device (abbreviated as the encoding device 500) according to an embodiment of the present application. The encoding device 500 may include a processor 510, a memory 530, and a bus system 550. The processor and the memory are connected via the bus system. The memory is configured to store instructions. The processor is configured to execute the instructions stored in the memory. The memory of the encoding device stores program code. The processor may call the program code stored in the memory to execute various video encoding or decoding methods described in this application. For the sake of avoiding repetition, details are not described here.
[0141] In this embodiment of the present application, the processor 510 may be a central processing unit (abbreviated as "CPU"), or the processor 510 may be another general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or another programmable logic device, an individual gate or transistor logic device, an individual hardware component, etc. The general-purpose processor may be a microprocessor or any conventional processor, etc.
[0142] Memory 530 may include a read-only memory (ROM) device or a random-access memory (RAM) device. Any other suitable type of storage device may alternatively be used as memory 530. Memory 530 may include code and data 531 that are accessed by processor 510 via bus 550. Memory 530 may further include operating system 533 and application program 535. Application program 535 includes at least one program that enables processor 510 to execute video encoding or decoding methods described in this application (in particular, methods for constructing the MPM list described in this application and methods for obtaining the intra prediction mode of chroma blocks).
[0143] In addition to the data bus, bus system 550 may further include a power bus, a control bus, a status signal bus, and the like. However, for clarity of explanation, the various types of buses in the figure are shown as bus system 550.
[0144] Optionally, encoding device 500 may further include one or more output devices, such as display 570. In one example, display 570 may be a touch display that combines a display and a touch unit operable to sense contact input. Display 570 may be coupled to processor 510 via bus 550.
[0145] The solutions in the embodiments of this application will be described in detail below.
[0146] FIG. 6 is a schematic flowchart of a method for constructing an MPM list according to an embodiment of the present application. Process 600 may be executed by video coder 20 or video decoder 30. Process 600 is described as a series of steps or operations. It should be understood that the steps or operations of Process 600 may be executed in various orders and / or simultaneously and are not limited to the execution order shown in FIG. 6. As shown in FIG. 6, the MIP mode is used for the current block, and the method for constructing the MPM list includes the following steps.
[0147] In step 601, obtain the intra prediction mode information of adjacent blocks.
[0148] As shown in FIGS. 7A and 7B, in the MIP mode, intra prediction is mainly performed using the upper adjacent block and the left adjacent block of the current block. Therefore, the adjacent blocks in the present application include the left adjacent block (A) and / or the upper adjacent block (B) of the current block.
[0149] The intra prediction currently executed in a block is a prediction executed based on the prediction values of adjacent blocks of the current block, and the adjacent blocks must be reconstructed image blocks. Therefore, it is usually necessary to first determine whether the adjacent blocks are available, that is, whether the adjacent blocks exist and have been reconstructed. For example, if the left adjacent block does not exist, the left adjacent block is not available. Or, if the upper adjacent block exists but has not been reconstructed, the upper adjacent block is not available. While the available adjacent blocks are being reconstructed, intra prediction is being executed using the intra prediction mode. Therefore, the intra prediction mode information of the adjacent blocks can be directly read. The intra prediction mode information of the adjacent blocks includes a flag (e.g., MIP_FLAG or intra_mip_flag) used to indicate whether the intra prediction mode of the adjacent block is the MIP mode, and further includes information used to indicate a specific intra prediction mode of the adjacent block, such as the intra prediction mode indicated using IntraPredModeY[xNbX][yNbX]. IntraPredModeY[xNbX][yNbX] is used to indicate the intra prediction mode of the image block with coordinates (xNbX, yNbX), and the coordinates (xNbX, yNbX) indicate the position of the upper left corner of the image block relative to the upper left corner of the image where the image block is arranged.
[0150] In step 602, based on the intra prediction mode information of the adjacent blocks, it is determined whether the intra prediction mode of the adjacent block is the MIP mode.
[0151] Table 1 shows the correspondence between other intra predictions and the MIP mode, and sizeId is used to indicate the size index of the image block for which the MIP mode is used. For example, for an image block with the intra prediction mode IntraPredModeY[xNbX][yNbX] being 0, when the sizeId of the image block is 0, the corresponding MIP mode is 17; when the sizeId of the image block is 1, the corresponding MIP mode is 0; when the sizeId of the image block is 2, the corresponding MIP mode is 5. For an image block with the intra prediction mode IntraPredModeY[xNbX][yNbX] being 18, when the sizeId of the image block is 1, the corresponding MIP mode is 7.
[0152] [Table 1]
[0153] Table 2 shows the correspondence between the MIP mode and other intra prediction modes. In Table 2, the MIP mode set includes 35 modes. There are 35 modes corresponding to a 4 x 4 image block (size index 0). There are 19 modes corresponding to an 8 x 4, 4 x 8, or 8 x 8 image block (size index 1). There are 11 modes corresponding to image blocks of other sizes (size index 2). IntraPredModeY[xNbX][yNbX] is used to indicate a specific MIP mode of the image block at coordinates (xNbX, yNbX), where the coordinates (xNbX, yNbX) indicate the position of the upper left corner of the image block relative to the upper left corner of the image in which the image block is placed, and sizeId is used to indicate the size index of the image block for which an intra prediction mode (non-MIP mode) is used. For example, for an image block with MIP mode IntraPredModeY[xNbX][yNbX] being 0, when the sizeId of the image block is 0, the corresponding intra prediction mode is 0; when the sizeId of the image block is 1, the corresponding intra prediction mode is 0; or when the sizeId of the image block is 2, the corresponding intra prediction mode is 1. For an image block with MIP mode IntraPredModeY[xNbX][yNbX] being 18, when the sizeId of the image block is 1, the corresponding intra prediction mode is 0.
[0154]
Table 2
[0155] As described above, the intra prediction mode information of an adjacent block includes a flag used to indicate whether the intra prediction mode of the adjacent block is the MIP mode (for example, the flag may be MIP_FLAG or intra_mip_flag, or another flag, and is not particularly limited in this regard). Therefore, whether the intra prediction mode of the adjacent block is the MIP mode can be determined based on MIP_FLAG or intra_mip_flag. For example, if the value of MIP_FLAG is 0, it indicates that the intra prediction mode of the adjacent block is not the MIP mode, or if the value of MIP_FLAG is 1, it indicates that the intra prediction mode of the adjacent block is the MIP mode. If the value of MIP_FLAG is 1, it indicates that the intra prediction mode of the adjacent block is the MIP mode, or if the value of intra_mip_flag is 0, it indicates that the intra prediction mode of the adjacent block is not the MIP mode.
[0156] In step 603, if the intra prediction mode of the adjacent block is not the MIP mode, the intra prediction mode of the adjacent block is not used in the MPM list configuration of the current block.
[0157] In the present application, when the intra prediction mode of the adjacent block is not the MIP mode, the intra prediction mode of the adjacent block is set to be unavailable in order to indicate that the intra prediction mode of the adjacent block is not used in the MPM list configuration of the current block. Since the MIP mode is not used for both the current block and the adjacent block, this can avoid a situation where it is necessary to perform a conversion between MIP and another intra prediction mode based on the correspondence between MIP and another intra prediction mode in order to configure the MPM list, and as a result, the complexity of the MPM list configuration is reduced.
[0158] In this case, the MPM list configuration is described using the example of "when condition (1) is not satisfied, then (2)" in "2. Configure the MPM list of the current block based on the value of candMipModeX" below.
[0159] In step 604, if the intra prediction mode of the adjacent block is the MIP mode, the intra prediction mode of the adjacent block is used for the MPM list configuration of the current block.
[0160] In the present application, when the intra prediction mode of the adjacent block is the MIP mode, it is necessary to further determine whether the size indexes of the current block and the adjacent block are the same. If the size indexes of the current block and the adjacent block are different, the intra prediction mode of the adjacent block is not used for the MPM list configuration of the current block. Or if the size indexes of the current block and the adjacent block are the same, the intra prediction mode of the adjacent block is used for the MPM list configuration of the current block.
[0161] For example, in the above-mentioned step, in order to indicate that the intra prediction mode of the adjacent block is not used for the MPM list configuration of the current block, the value of candMipModeX can be set to -1.
[0162] In the present application, when the MIP mode is used for the current block, if the intra prediction mode of the adjacent block is not the MIP mode, the intra prediction mode of the adjacent block is not used for the MPM list configuration of the current block, so the complexity of the MPM list configuration can be reduced.
[0163] An embodiment of the method shown in FIG. 6 will be described in detail below. For example, the upper left corner of the image where the current block is placed is used as the origin, the coordinates (xCb, yCb) are used to indicate the position of the upper left corner of the current block with respect to the origin, and the coordinates (xNbA, yNbA) are used to indicate the position of the upper left corner of the left adjacent block with respect to the origin (or the left adjacent block, i.e., (xCb - 1, yCb) can be obtained based on the coordinates of the current block), and the coordinates (xNbB, yNbB) can be used to indicate the position of the upper left corner of the upper adjacent block with respect to the origin (or the upper adjacent block, i.e., (xCb, yCb - 1) can be obtained based on the coordinates of the current block).
[0164] 1. Determine the value of candMipModeX.
[0165] Here, when the MIP mode is used for the current block, candMipModeX is used to indicate the candidate value of the intra prediction mode that is of the adjacent block and used in the MPM list configuration, indicating the intra prediction mode. When X is A, it indicates that the adjacent block is the left adjacent block. When X is B, it indicates that the adjacent block is the upper adjacent block.
[0166] (1) If one or more of the following conditions are satisfied, the value of candMipModeX is set to -1.
[0167] a. The adjacent block (X) is not available.
[0168] In this application, the fact that the adjacent block is not available means that the adjacent block does not exist or has not been reconstructed, or the intra prediction mode of the adjacent block is not the MIP mode. It should be noted that another condition may be alternatively used to determine whether the adjacent block is available. This is not particularly limited in this application.
[0169] b. The prediction mode of the adjacent block (X) is not intra prediction and is not the combined inter and intra prediction (CIIP) mode.
[0170] c. pcm_flag[xNbX][yNbX] is 1.
[0171] In this application, the flag pcm_flag is used to indicate whether the PCM mode is used for the corresponding adjacent block. For example, if pcm_flag[xNbA][yNbA] is 1, it indicates that the PCM mode is used for the left adjacent block, and if pcm_flag[xNbB][yNbB] is 0, it indicates that the PCM mode is not used for the upper adjacent block. Usually, when there is no pcm_flag corresponding to the adjacent block, by default, the value of the pcm_flag of the adjacent block is regarded as 0.
[0172] d. When the adjacent block is the upper adjacent block, the current block and the upper adjacent block are within the same CTU.
[0173] (2) If none of the conditions in (1) are satisfied, it is determined whether the size indices (sizeId) of the current block and the adjacent block are the same.
[0174] In MIP, the correspondence between the size and the index is set based on the size of the image block. For example, Table 3 is an example of the correspondence between the size of the image block and the size index.
[0175]
Table 3
[0176] The determination process in this step is to determine whether sizeId[xCb][yCb] is equal to sizeId[xNbX][yNbX] by comparison. If sizeId[xCb][yCb] and sizeId[xNbX][yNbX] are not equal, the value of candMipModeX is set to -1. If sizeId[xCb][yCb] and sizeId[xNbX][yNbX] are the same, then candMipModeX = IntraPredModeY[xNbX][yNbX], where IntraPredModeY[xNbX][yNbX] indicates the intra prediction mode of the adjacent block.
[0177] 2. Construct the MPM list of the current block based on the value of candMipModeX.
[0178] (1) If both the values of candMipModeA and candMipModeB are -1, MPM candidates are obtained according to the method in Table 4.
[0179]
Table 4
[0180] 0, 1, and 2 in the second row of Table 4 represent the size indexes (sizeId) of the image blocks respectively. For example, if the sizeId of the current block is 0, the MPM list of the current block will be the column corresponding to index 0 in Table 4. In other words, in the MPM list, MPM[0] = 17, MPM[1] = 0, and MPM[2] = 1. Or, if the sizeId of the current block is 2, the MPM list of the current block will be the column corresponding to index 2 in Table 4. In other words, in the MPM list, MPM[0] = 5, MPM[1] = 16, and MPM[2] = 6.
[0181] For example, if none of the intra prediction modes of adjacent blocks can be used for the MPM list construction of the current block, the default modes mipMpmCand[0], mipMpmCand[1], and mipMpmCand[2] are used for the MPM list construction of the current block.
[0182] (2) If the condition in (1) is not satisfied, the MPM list is constructed according to the following steps.
[0183] a. If the values of candMipModeA and candMipModeB are the same, or at least one of the values of candMipModeA and candMipModeB is -1, it is determined whether the value of candMipModeA is -1. If the value of candMipModeA is not -1, then MPM[0]=candMipModeA; or if the value of candMipModeA is -1, then MPM[0]=candMipModeB. MPM[0] determined in the above step is compared with mipMpmCand[0] in Table 4. If MPM[0] determined in the above step is the same as mipMpmCand[0] in Table 4, then MPM[1]=mipMpmCand[1] and MPM[2]=mipMpmCand[2]. If MPM[0] determined in the above step is different from mipMpmCand[0] in Table 4, then MPM[1]=mipMpmCand[0] and MPM[2]=(MPM[0]!=mipMpmCand[1])?mipMpmCand[1]:mipMpmCand[2].
[0184] For example, if the intra prediction mode of at least one adjacent block cannot be used for the MPM list construction of the current block, after the default modes and the available intra prediction modes of the adjacent blocks are de-duplicated, the intra prediction modes obtained after de-duplication are used for the MPM list construction of the current block. The default modes include one or more of mipMpmCand[0], mipMpmCand[1], and mipMpmCand[2].
[0185] When the value of b.candMipModeA is different from the value of candMipModeB, and when both the value of candMipModeA and the value of candMipModeB are -1, then MPM[0]=candMipModeA and MPM[1]=candMipModeB. The three values of mipMpmCand[0], mipMpmCand[1], and mipMpmCand[2] in the column corresponding to the sizeId of the current block in Table 4 are de-duplicated in order using the determined MPM[0] and MPM[1], and the available value among the three values is used as MPM[2]. For example, MPM[0]=17, MPM[1]=7, and the sizeId of the current block is 0. The column {17,0,1} corresponding to 0 is de-duplicated. Since 17 is the same as MPM[0], MPM[2]=0. Alternatively, MPM[0]=5, MPM[1]=6, and the sizeId of the current block is 2. The column {5,16,6} corresponding to 2 is de-duplicated. Since 5 is the same as MPM[0] and 6 is the same as MPM[1], MPM[2]=16.
[0186] For example, if all the intra prediction modes of adjacent blocks can be used in the MPM list configuration of the current block, then the intra prediction modes of the adjacent blocks are used in the MPM list configuration of the current block. Next, after the default mode and the available intra prediction modes of the adjacent blocks are de-duplicated, the intra prediction modes obtained after de-duplication are used in the MPM list configuration of the current block. The default mode includes one or more of mipMpmCand[0], mipMpmCand[1], and mipMpmCand[2].
[0187] By not using the MIP mode in both the current block and the adjacent blocks, it is possible to avoid a situation where it is necessary to perform a conversion between MIP and another intra prediction mode based on the correspondence between MIP and another intra prediction mode in order to construct the MPM list, and as a result, the complexity of the MPM list configuration is reduced.
[0188] Figure 8 is another schematic flowchart of a method for constructing an MPM list according to an embodiment of the present application. Process 800 may be executed by video coder 20 or video decoder 30. Process 800 is described as a series of steps or operations. It should be understood that the steps or operations of Process 800 may be executed in various orders and / or simultaneously, and are not limited to the execution order shown in Figure 8. The difference between this embodiment and the embodiment shown in Figure 6 is that the MIP mode is not used for the current block. As shown in Figure 8, the method for constructing an MPM list includes the following steps.
[0189] In step 801, obtain the intra prediction mode information of adjacent blocks.
[0190] In step 802, based on the intra prediction mode information of adjacent blocks, determine whether the intra prediction mode of the adjacent blocks is the MIP mode.
[0191] The principles of steps 801 and 802 in this embodiment are the same as those of steps 601 and 602 in the embodiment shown in Figure 6, and will not be described in detail here again.
[0192] In step 803, if the intra prediction mode of the adjacent blocks is the MIP mode, do not use the intra prediction mode of the adjacent blocks for the MPM list construction of the current block.
[0193] In the present application, similarly, the intra prediction mode of adjacent blocks is not used for the MPM list construction of the current block. The constraint condition of step 803 is that the intra prediction mode of the adjacent blocks is the MIP mode. However, the constraint condition of step 603 is that the intra prediction mode of the adjacent blocks is not the MIP mode. The common principle of the two constraint conditions is that the intra prediction modes of the adjacent blocks and the current block will not both be the MIP mode.
[0194] In this application, when the intra prediction mode of an adjacent block is the MIP mode, in order to indicate that the intra prediction mode of the adjacent block is not used in the current block's MPM list configuration, the intra prediction mode of the adjacent block is set to be unavailable. Since the MIP mode is not used for both the current block and the adjacent block, this can avoid a situation where it is necessary to perform a conversion between MIP and another intra prediction mode based on the correspondence between MIP and the other intra prediction mode in order to configure the MPM list, and as a result, the complexity of the MPM list configuration is reduced.
[0195] In step 804, if the intra prediction mode of the adjacent block is not the MIP mode, the intra prediction mode of the adjacent block is used in the current block's MPM list configuration.
[0196] In this application, similarly, the intra prediction mode of the adjacent block is used in the current block's MPM list configuration. The constraint condition of step 804 is that the intra prediction mode of the adjacent block is not the MIP mode. However, the constraint condition of step 604 is that the intra prediction mode of the adjacent block is the MIP mode. The common principle of the two constraint conditions is that the intra prediction mode of the adjacent block and the intra prediction mode of the current block are the MIP mode.
[0197] For example, in the foregoing step, in order to indicate that the intra prediction mode of the adjacent block is not used in the current block's MPM list configuration, the value of candIntraPredModeX can be set to -1.
[0198] In this application, when the MIP mode is not used for the current block, if the intra prediction mode of the adjacent block is the MIP mode, the intra prediction mode of the adjacent block is not used in the current block's MPM list configuration, so the complexity of the MPM list configuration can be reduced.
[0199] An embodiment of the method shown in FIG. 8 will be described in detail below. For example, the upper left corner of the image where the current block is placed is used as the origin, the coordinates (xCb, yCb) are used to indicate the position of the upper left corner of the current block relative to the origin, the coordinates (xNbA, yNbA) are used to indicate the position of the upper left corner of the left adjacent block relative to the origin, and the coordinates (xNbB, yNbB) can be used to indicate the position of the upper left corner of the upper adjacent block relative to the origin.
[0200] 1. Determine the value of candIntraPredModeX.
[0201] Here, when the MIP mode is not used for the current block, candIntraPredModeX is used to indicate the candidate value of the intra prediction mode that is of the adjacent block and is used in the MPM list configuration, indicating the intra prediction mode. When X is A, it indicates that the adjacent block is the left adjacent block. When X is B, it indicates that the adjacent block is the upper adjacent block.
[0202] (1) If one or more of the following conditions are satisfied, the value of candIntraPredModeX is set to the Planar mode (INTRA_PLANAR).
[0203] a. The adjacent block (X) is not available.
[0204] In this application, the fact that the adjacent block is not available means that the adjacent block does not exist or has not been reconstructed, or that the intra prediction mode of the adjacent block is the MIP mode. It should be noted that another condition may be alternatively used to determine whether the adjacent block is available. This is not particularly limited in this application.
[0205] b. The prediction mode of the adjacent block (X) is neither intra prediction nor the CIIP mode.
[0206] c. pcm_flag[xNbX][yNbX] is 1.
[0207] d. When the adjacent block is the upper adjacent block, the current block and the upper adjacent block are within the same CTU.
[0208] (2) If none of the conditions in (1) are satisfied, then candIntraPredModeX = IntraPredModeY[xNbX][yNbX], where IntraPredModeY[xNbX][yNbX] indicates the intra prediction mode of the adjacent block.
[0209] 2. Construct the MPM list of the current block based on the value of candIntraPredModeX.
[0210] The MPM list is constructed based on the values of candMipModeA and candMipModeB obtained in the previous step, and the mode size relevance between INTRA_PLANAR and INTRA_DC.
[0211] Table 5 shows the correspondence between the mode name and the mode size. Hereinafter, the MPM list construction process will be described using examples.
[0212]
Table 5
[0213] (1) When candIntraPredModeB is equal to candIntraPredModeA and candIntraPredModeA is greater than INTRA_DC, candModeList[x] of the MPM list is as follows, where the value range of x is 0 to 4. candModeList[0] = candIntraPredModeA; candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64); candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64); candModeList[3] = INTRA_DC; and candModeList[4] = 2 + ((candIntraPredModeA + 60) % 64).
[0214] For example, when all intra prediction modes of adjacent blocks can be used for the current block's MPM list configuration, the intra prediction modes of adjacent blocks are used for the current block's MPM list configuration. Next, the current block's MPM list is configured using a default algorithm based on the default mode and the intra prediction modes of adjacent blocks. The default mode is INTRA_DC. The default algorithm may be as described above.
[0215] (2) When candIntraPredModeB is not equal to candIntraPredModeA and one or both of candIntraPredModeB and candIntraPredModeA are greater than INTRA_DC, the following method is used.
[0216] a. Of candIntraPredModeA and candIntraPredModeB, the larger one is set as maxAB and the smaller one is set as minAB.
[0217] b. When both candIntraPredModeB and candIntraPredModeA are greater than INTRA_DC, candModeList[0] = candIntraPredModeA; candModeList[1] = candIntraPredModeB; candModeList[2] = INTRA_DC, and if maxAB - minAB is in the range of 2 to 62, candModeList[3] = 2 + ((maxAB + 61) % 64); and candModeList[4] = 2 + ((maxAB - 1) % 64); or If maxAB - minAB is not in the range of 2 to 62, candModeList[3] = 2 + ((maxAB + 60) % 64); and candModeList[4] = 2 + ((maxAB) % 64).
[0218] For example, if all intra prediction modes of adjacent blocks can be used for the current block's MPM list configuration, the intra prediction modes of adjacent blocks are used in the current block's MPM list configuration. Next, the current block's MPM list is configured using a default algorithm based on the default mode, maxAB, and the intra prediction modes of adjacent blocks. The default mode is INTRA_DC. The default algorithm may be as described above.
[0219] If one of c.candIntraPredModeA and candIntraPredModeB is greater than INTRA_DC, candModeList[0] = maxAB; candModeList[1] = INTRA_DC; candModeList[2] = 2 + ((maxAB + 61) % 64); candModeList[3] = 2 + ((maxAB - 1) % 64); and candModeList[4] = 2 + ((maxAB + 60) % 64).
[0220] For example, if all intra prediction modes of adjacent blocks can be used for the current block's MPM list configuration, the current block's MPM list is configured using a default algorithm based on the default mode, maxAB, and the intra prediction modes of adjacent blocks. The default mode is INTRA_DC. The default algorithm may be as described above.
[0221] (3) If neither (1) nor (2) is satisfied, candModeList[0] = INTRA_DC; candModeList[1] = INTRA_ANGULAR50; candModeList[2] = INTRA_ANGULAR18; candModeList[3] = INTRA_ANGULAR46; and candModeList[4] = INTRA_ANGULAR54.
[0222] For example, when none of the intra prediction modes of the adjacent blocks can be used for the current block's MPM list configuration, the current block's MPM list is configured based on the default mode. The default mode includes INTRA_DC, INTRA_ANGULAR50, INTRA_ANGULAR18, INTRA_ANGULAR46, and INTRA_ANGULAR54.
[0223] By not using the MIP mode for both the current block and the adjacent blocks, this can avoid a situation where it is necessary to perform a conversion between MIP and another intra prediction mode based on the correspondence between MIP and another intra prediction mode to configure the MPM list, and as a result, the complexity of the MPM list configuration is reduced.
[0224] FIG. 9 is a schematic flowchart of a method for obtaining an intra prediction mode of a chroma block according to an embodiment of the present application. Process 900 may be executed by video encoder 20 or video decoder 30. Process 900 is described as a series of steps or operations. It should be understood that the steps or operations of Process 900 may be executed in various orders and / or simultaneously, and are not limited to the execution order shown in FIG. 9. As shown in FIG. 9, the method for obtaining an intra prediction mode of a chroma block includes the following steps.
[0225] In step 901, obtain the intra prediction mode of the luma block.
[0226] The luma block is the luma block corresponding to the current chroma block. Specifically, the luma block and the current chroma block are the luma component and chroma component of the same image block. Similar to the case of the luma block, for the intra prediction of the chroma block, the boundary pixels of adjacent reconstructed blocks around the current chroma block are used as the reference pixels of the current block, and based on a specific prediction mode, the reference pixels are mapped to the pixels within the current chroma block so as to function as the predicted values of the pixels within the current chroma block. The difference is that the texture of the chroma block is usually relatively simple, and the number of intra prediction modes of the chroma block is usually less than that of the luma block. For example, in H.265, there are only five intra prediction modes for the chroma block: Planar mode, vertical mode, horizontal mode, DC mode, and DM mode. For example, in HEVC, there are five intra prediction modes for the chroma block, corresponding to mode indices 0 to 4 respectively. Mode index 0 is the Planar mode (corresponding to mode 0 of the luma block). Mode index 1 is the vertical mode (corresponding to mode 26 of the luma block). Mode index 2 is the horizontal mode (corresponding to mode 10 of the luma block). Mode index 3 is the DC mode (corresponding to mode 1 of the luma block). Mode index 4 is the DM mode.
[0227] In step 902, it is determined whether the intra prediction mode of the luma block is the MIP mode.
[0228] As described above, the intra prediction mode information of the luma block includes a flag (MIP_FLAG) used to indicate whether the intra prediction mode of the luma block is the MIP mode. Therefore, whether the intra prediction mode of the luma block is the MIP mode can be determined based on the MIP_FLAG. For example, if the value of the MIP_FLAG is 0, it indicates that the intra prediction mode of the luma block is not the MIP mode, or if the value of the MIP_FLAG is 1, it indicates that the intra prediction mode of the luma block is the MIP mode.
[0229] The intra prediction mode information of the luma block further includes information used to indicate a specific intra prediction mode of the luma block, such as the intra prediction mode indicated by using IntraPredModeY[xCb][yCb]. For example, the upper left corner of the image where the current block is located is used as the origin, and the coordinates (xCb, yCb) can be used to indicate the position of the upper left corner of the current block relative to the origin.
[0230] In step 903, if the intra prediction mode of the luma block is not the MIP mode, the intra prediction mode of the luma block is used as the intra prediction mode of the current chroma block.
[0231] In step 904, if the intra prediction mode of the luma block is the MIP mode, the default mode is used as the intra prediction mode of the chroma block.
[0232] The default mode of the chroma block includes the Planar mode of the DC mode.
[0233] For the current chroma block, the intra prediction mode of the luma block covering the central position of the current chroma block is directly inherited. Specifically, the same intra prediction mode as the luma component is selected for the chroma component. This is the method for obtaining the intra prediction mode used when the DM mode is used for the chroma block. In the present application, based on the DM mode, when the MIP mode is added to the luma block, if the intra prediction mode of the luma block is not the MIP mode, the intra prediction mode of the luma block is used as the intra prediction mode of the current chroma block, or if the intra prediction mode of the luma block is the MIP mode, the default mode is used as the intra prediction mode of the current chroma block. Therefore, the complexity of obtaining the intra prediction mode of the chroma block can be reduced.
[0234] An embodiment of the method shown in FIG. 9 will be described in detail below. DM is used for the current chroma block. For example, the upper left corner of the image where the current block is located is used as the origin, the coordinates (xCb, yCb) are used to indicate the position of the upper left corner of the current block relative to the origin, the coordinates (xNbA, yNbA) are used to indicate the position of the upper left corner of the left adjacent block relative to the origin, and the coordinates (xNbB, yNbB) can be used to indicate the position of the upper left corner of the upper adjacent block relative to the origin.
[0235] The intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block is obtained.
[0236] a. If the intra prediction mode of the luma block is the MIP mode, the prediction mode of the current chroma block is directly set to a default value such as the Planar mode or the DC mode (this default mode is regarded as a value agreed upon between the encoder side and the decoder side). In this case, the following steps are not required.
[0237] b. If the intra prediction mode of the luma block is not the MIP mode, the prediction mode of the current chroma block is directly set to the intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block. The intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block is equal to IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2], where cbWidth indicates the width of the luma block and cbHeight indicates the height of the luma block. Specifically, in this case, the intra prediction mode used for the image block whose upper left corner is the central pixel of the current block is used as the intra prediction mode of the luma block. Then, the intra prediction mode of the current chroma block is directly set to the intra prediction mode of the corresponding luma block.
[0238] FIG. 10 is a schematic block diagram of an intra prediction apparatus 1000 according to an embodiment of the present application. The intra prediction apparatus 1000 may include an acquisition module 1001, a determination module 1002, and a processing module 1003.
[0239] When the MIP mode is used for the current block, the acquisition module 1001 is configured to acquire the intra prediction mode information of the adjacent block, and the adjacent block includes the upper adjacent block and / or the left adjacent block of the current block. The determination module 1002 is configured to determine whether the intra prediction mode of the adjacent block is the MIP mode based on the intra prediction mode information of the adjacent block. The processing module 1003 is configured not to use the intra prediction mode of the adjacent block in the MPM list configuration of the current block if the intra prediction mode of the adjacent block is not the MIP mode, or to use the intra prediction mode of the adjacent block in the MPM list configuration of the current block if the intra prediction mode of the adjacent block is the MIP mode.
[0240] In a possible implementation, the processing module 1003 is specifically configured to set the intra prediction mode of the adjacent block to be unavailable.
[0241] In a possible embodiment, the processing module 1003 is further configured to set the value of candMipModeX to -1 to indicate that the intra prediction mode of the adjacent block is not used in the MPM list configuration of the current block.
[0242] In a possible embodiment, the processing module 1003 is further configured to use the default mode in the MPM list configuration of the current block if the intra prediction mode of the adjacent block is the MIP mode.
[0243] In a possible embodiment, the processing module 1003 is specifically configured to determine whether the size index of the current block and the adjacent block is the same if the intra prediction mode of the adjacent block is the MIP mode. If the size index of the current block and the adjacent block is different, the intra prediction mode of the adjacent block is not used in the MPM list configuration of the current block, or if the size index of the current block and the adjacent block is the same, the intra prediction mode of the adjacent block is used in the MPM list configuration of the current block.
[0244] In a possible embodiment, the acquisition module 1001 is further configured to acquire the intra prediction mode of the adjacent block based on the intra prediction mode information of the adjacent block.
[0245] In a possible embodiment, the determination module 1002 is specifically configured to determine whether the intra prediction mode of the adjacent block is the MIP mode based on the flag MIP_FLAG, and the intra prediction mode information of the adjacent block includes the MIP_FLAG.
[0246] When the MIP mode is not used for the current block, the acquisition module 1001 is configured to acquire the intra prediction mode information of the adjacent blocks, where the adjacent blocks include the upper adjacent block and / or the left adjacent block of the current block, and the determination module 1002 is configured to determine whether the intra prediction mode of the adjacent blocks is the MIP mode based on the intra prediction mode information of the adjacent blocks. The processing module 1003 is configured such that if the intra prediction mode of the adjacent blocks is the MIP mode, the intra prediction mode of the adjacent blocks is not used in the MPM list configuration of the current block, or if the intra prediction mode of the adjacent blocks is not the MIP mode, the intra prediction mode of the adjacent blocks is used in the MPM list configuration of the current block.
[0247] In a possible implementation, the processing module 1003 is specifically configured to set the intra prediction mode of the adjacent blocks to be unavailable.
[0248] In a possible implementation, the processing module 1003 is further configured to set the value of candIntraPredModeX to -1 to indicate that the intra prediction mode of the adjacent blocks is not used in the MPM list configuration of the current block.
[0249] In a possible implementation, the processing module 1003 is further configured to use the default mode in the MPM list configuration of the current block if the intra prediction mode of the adjacent blocks is the MIP mode.
[0250] In a possible implementation, the acquisition module 1001 is further configured to acquire the intra prediction mode of the adjacent blocks based on the intra prediction mode information of the adjacent blocks.
[0251] In a possible embodiment, the determination module 1002 is specifically configured to determine whether the intra prediction mode of an adjacent block is the MIP mode based on the flag MIP_FLAG, and the intra prediction mode information of the adjacent block includes MIP_FLAG.
[0252] When DM is used for the current chroma block, the acquisition module 1001 is configured to acquire the intra prediction mode of the luma block, where the luma block is the luma block corresponding to the current chroma block, the determination module 1002 is configured to determine whether the intra prediction mode of the luma block is the intra prediction MIP mode based on a matrix, and the processing module 1003 is configured to use the intra prediction mode of the luma block as the intra prediction mode of the current chroma block if the intra prediction mode of the luma block is not the MIP mode, or to use the default mode as the intra prediction mode of the chroma block if the intra prediction mode of the luma block is the MIP mode.
[0253] In a possible embodiment, the default mode includes the Planar mode or the DC mode.
[0254] It should be noted that the acquisition module 1001, the determination module 1002, and the processing module 1003 of the intra prediction apparatus 1000 can be used in the intra prediction process on the encoder side or the decoder side. After the MPM list of the current block is configured, the specific prediction mode of the current block may be determined based on the configured MPM list of the current block, and then, based on the specific prediction mode, the predicted pixel value of the current block is determined. Specifically, on the encoder side, the module can be used in the intra prediction unit 254 in the prediction processing unit 260 of the encoder 20. On the decoder side, the module can be used in the intra prediction unit 354 in the prediction processing unit 360 of the decoder 30.
[0255] For the specific implementation processes of the acquisition module 1001, the determination module 1002, and the processing module 1003, it should be further noted that reference is made to the detailed descriptions of any of the embodiments in FIGS. 6 to 9. For the sake of brevity of the specification, the details are not described here.
[0256] As will be understood by those skilled in the art, the functions described in connection with the various exemplary logical blocks, modules, and algorithm steps disclosed and described in this specification can be implemented by hardware, software, firmware, or any combination thereof. When the functions described in connection with the exemplary logical blocks, modules, and steps are implemented by software, they can be stored in a computer-readable medium as one or more instructions or codes or transmitted via a computer-readable medium and executed by a hardware-based processing unit. The computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium such as a data storage medium, or any communication medium that facilitates the transmission of a computer program from one place to another (e.g., in accordance with a communication protocol). In this way, the computer-readable medium can generally correspond to (1) a non-transitory tangible computer-readable storage medium, or (2) a communication medium such as a signal or a carrier wave. The data storage medium may be any usable medium that can be accessed by one or more computers or one or more processors to incorporate the instructions, codes, and / or data structures for implementing the techniques described in this application. A computer program product may include a computer-readable medium.
[0257] By way of example and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other compact disc storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. Further, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, or microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, or microwave are included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but rather mean actual non-transient tangible storage media. As used herein, disk includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), and Blu-ray disc. A disk typically reproduces data magnetically, but a disk can reproduce data optically using a laser. Combinations of the foregoing should also be included within the scope of computer-readable media.
[0258] The commands may be executed by one or more processors such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or equivalent integrated circuits or discrete logic circuits. Thus, the term "processor" as used herein can be either of the foregoing structures or any other structure suitable for implementing the techniques described herein. Further, in some aspects, the functionality described in connection with the exemplary logic blocks, modules, and steps described in this specification may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a combined codec. Additionally, all of the techniques can be implemented with one or more circuits or logic elements.
[0259] The techniques in this application may be implemented in various apparatuses or devices including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chip sets). In this application, various components, modules, or units are described to emphasize the functional aspects of the apparatuses configured to execute the disclosed techniques, but these are not necessarily implemented by different hardware units. In fact, as described above, the various units may be combined into codec hardware units in combination with appropriate software and / or firmware, or may be provided by interoperable hardware units (including one or more of the foregoing processors).
[0260] In the foregoing embodiments, each embodiment description has its respective focus. For parts not described in detail in an embodiment, please refer to the relevant descriptions of other embodiments.
[0261] The above description is merely a specific example of the present application and is not intended to limit the protection scope of the present application. Any modification or substitution that can be easily conceived by those skilled in the art within the technical scope disclosed in the present application should fall within the protection scope of the present application. Therefore, the protection scope of the present application should follow the protection scope of the claims.
Explanation of Reference Numerals
[0262] 10 Video Encoding and Decoding System 12 Source Device 13 Link 14 Destination Device 16 Image Source 17 Raw Image Data 18 Image Preprocessor 19 Preprocessed Image Data 20 Encoder 21 Encoded Image Data 22 Communication Interface 28 Communication Interface 30 Decoder 31 Decoded Image Data 32 Image Postprocessor 33 Postprocessed Image Data 34 Display Device 40 Video Encoding System 41 Imaging Device 42 Antenna 43 Processor 44 Memory 45 Display Device 46 Processing Unit 47 Logic Circuit 201 Image 202 Input 203 Image Block 204 Residual Calculation Unit 205 Residual Block 206 Transformation Processing Unit 207 Transformation Coefficient 208 Quantization Unit 209 Quantization conversion coefficient 210 Inverse quantization unit 211 Inverse quantization coefficient 212 Inverse transformation processing unit 213 Reconstructed residual block (inverse transformation block) 214 Reconstruction unit 215 Reconstruction block 216 Buffer 220 Loop filter unit 221 Filtered block 230 Decoded image buffer (DPB) 231 Decoded image 244 Inter prediction unit 245 Inter prediction block 254 Intra prediction unit 255 Intra prediction block 260 Prediction processing unit 262 Mode selection unit 265 Prediction block 270 Entropy encoding unit 272 Output 304 Entropy decoding unit 309 Quantization coefficient 310 Inverse quantization unit 311 Inverse quantization coefficient 312 Inverse transformation processing unit 313 Reconstructed residual block 314 Reconstruction unit 315 Reconstruction block 316 Buffer 317 Reference sample 320 Loop filter unit 321 Filtered block 330 Decoded image buffer (DPB) 331 Decoded image 332 Output 344 Inter prediction unit 354 Intra prediction unit 360 Prediction processing unit 362 Mode Selection Unit 365 Prediction Block 400 Video Encoding Device 410 Input Port 420 Receiver Unit 430 Processor 440 Transmitter Unit 450 Output Port 460 Memory 470 Encoding / Decoding Module 500 Device (Encoding Device) 510 Processor 530 Memory 531 Data 533 Operating System 535 Application Program 550 Bus System 570 Display 600 Process 800 Process 900 Process 1000 Intra Prediction Device 1001 Acquisition Module 1002 Determination Module 1003 Processing Module 2820 Processing Unit
Claims
1. A method for obtaining an intra prediction mode of a chroma block, comprising: obtaining an intra prediction mode of a luma block, wherein the luma block is a luma block corresponding to a current chroma block; determining whether the intra prediction mode of the luma block is a matrix-based intra prediction (MIP) mode; if the intra prediction mode of the luma block is not the MIP mode, using the intra prediction mode of the luma block as the intra prediction mode of the current chroma block; A method comprising: the intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block is obtained; if the intra prediction mode of the luma block is not the MIP mode, the prediction mode of the current chroma block is set to the intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block; the intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block is equal to IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2], where cbWidth represents the width of the luma block and cbHeight represents the height of the luma block.
2. The method according to claim 1, wherein the intra prediction mode of the chroma block is not the MIP mode.
3. The method according to claim 1 or 2, wherein the intra prediction mode of the chroma block is a derived mode (DM).
4. An acquisition module configured to acquire an intra prediction mode of a luma block, wherein the luma block is a luma block corresponding to a current chroma block; a determination module configured to determine whether the intra prediction mode of the luma block is a matrix-based intra prediction MIP mode; a processing module configured to use the intra prediction mode of the luma block as the intra prediction mode of the current chroma block if the intra prediction mode of the luma block is not the MIP mode; An intra prediction apparatus comprising: The intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block is obtained, if the intra prediction mode of the luma block is not the MIP mode, the prediction mode of the current chroma block is set to the intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block, the intra prediction mode lumaIntraPredMode[xCb][yCb] of the luma block is equal to IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2], where cbWidth indicates the width of the luma block and cbHeight indicates the height of the luma block, apparatus.
5. The apparatus according to claim 4, wherein the intra prediction mode of the chroma block is not the MIP mode.
6. The apparatus according to claim 4 or 5, wherein the intra prediction mode of the chroma block is a derived mode (DM).
7. A video codec, the video codec being configured to encode / decode image blocks, An intra prediction apparatus according to any one of claims 4 to 6, configured to determine the intra prediction mode of the chroma block and then determine the predicted pixel value of the chroma block based on the prediction mode, an intra prediction apparatus, A reconstruction module configured to reconstruct the chroma block based on the predicted pixel value A video codec comprising.
8. A video coding device comprising a non-volatile memory and a processor coupled to each other, the processor calling program code stored in the memory to execute the method according to any one of claims 1 to 3.
Citation Information
Patent Citations
Affine linear weighted intra prediction in video coding
WO2020227393A1