Method and device for video processing and medium
By determining and reordering the cross-component prediction candidate list, the problem of insufficient encoding and decoding efficiency in the prior art is solved, and more efficient video encoding and decoding is achieved.
Patent Information
- Application Number
- CN202480016438.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-03-30
- Filing Date
- 2024-03-01
- Publication Date
- 2025-10-17
AI Technical Summary
Existing video coding and decoding technologies have room for improvement in coding and decoding efficiency, especially in cross-component prediction, where it is difficult to further improve coding and decoding efficiency.
By determining a cross-component prediction candidate list of a current video block, reordering the CCP candidate list, and performing conversion based on the reordered CCP candidate list, encoding and decoding efficiency is improved.
The codec effectiveness and efficiency of video processing are improved, and the performance of video encoding and decoding is enhanced.
Smart Images

Figure CN120814221A_ABST
Abstract
Description
TECHNICAL FIELD
[0001] Embodiments of the present disclosure generally relate to video processing technology, and more particularly, to cross-component prediction (CCP) candidates. BACKGROUND
[0002] Digital video capability is now being applied to a wide range of products including Blu-ray discs, digital televisions, camera phones, and wireless cameras, to name a few. Video devices provide users the ability to see a live image or recorded image from the perspective of another location, merely by operating a control. While this technology allows a user to see a desired image, there is a need for improved video coding / decoding technology. SUMMARY
[0003] Embodiments of the present disclosure provide a solution for video processing.
[0004] In a first aspect, a method for video processing is proposed. The method comprises determining, for a conversion between a current video block of a video and a bitstream of the video, a cross-component prediction (CCP) candidate list of the current video block, the CCP candidate list including at least one CCP candidate; reordering the at least one CCP candidate in the CCP candidate list; and performing the conversion based on the reordered CCP candidate list. The method according to the first aspect of the present disclosure reorders the CCP candidate list. Thereby, coding effectiveness and coding efficiency can be improved.
[0005] In a second aspect, an apparatus for video processing is proposed. The apparatus comprises a processor and a non-transitory memory having instructions thereon. The instructions, when executed by the processor, cause the processor to perform the method according to the first aspect of the present disclosure.
[0006] In a third aspect, a non-transitory computer-readable storage medium is proposed. The non-transitory computer-readable storage medium stores instructions that cause a processor to perform the method according to the first aspect of the present disclosure.
[0007] In a fourth aspect, another non-transitory computer-readable recording medium is proposed. The non-transitory computer-readable recording medium stores a bitstream of a video generated by a method performed by an apparatus for video processing. The method comprises determining a cross-component prediction (CCP) candidate list of a current video block of the video, the CCP candidate list including at least one CCP candidate; reordering the at least one CCP candidate in the CCP candidate list; and generating the bitstream based on the reordered CCP candidate list.
[0008] In a fifth aspect, a method for storing a bitstream of a video is proposed. The method includes determining a cross-component prediction (CCP) candidate list for a current video block of the video, the CCP candidate list including at least one CCP candidate; reordering the at least one CCP candidate in the CCP candidate list; generating the bitstream based on the reordered CCP candidate list; and storing the bitstream in a non-transitory computer-readable recording medium.
[0009] This summary is provided to introduce a selection of concepts that are further described below in the detailed description. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it used to limit the scope of the claimed subject matter. BRIEF DESCRIPTION OF DRAWINGS
[0010] The above and other objects, features and advantages of the example embodiments of the present disclosure will be more apparent from the following detailed description taken in conjunction with the accompanying drawings, in which like reference characters refer to like elements throughout. In the example embodiments of the present disclosure, like reference numerals refer to like elements throughout.
[0011] FIG. 1 A block diagram illustrating an example video coding system is shown in accordance with some embodiments of the present disclosure;
[0012] FIG. 2 A block diagram illustrating a first example video encoder is shown in accordance with some embodiments of the present disclosure;
[0013] FIG. 3 A block diagram illustrating an example video decoder is shown in accordance with some embodiments of the present disclosure;
[0014] FIG. 4 Nominal vertical and horizontal positions of 4:2:2 luma and chroma samples in a picture are shown;
[0015] FIG. 5 An example of an encoder block diagram is shown;
[0016] FIG. 6 67 intra prediction modes are shown;
[0017] FIG. 7 Reference samples for wide-angle intra prediction are shown;
[0018] FIG. 8 A problem of discontinuity in case of directions exceeding 45° is shown;
[0019] FIG. 9 Positions of samples used to derive a and b are shown;
[0020] FIG. 10 An example of classifying neighboring samples into two groups is shown;
[0021] FIG. 11A Figure 1 1 is a schematic diagram illustrating the definition of samples used by PDPC applied to diagonal-up-right mode;
[0022] FIG. 11B Figure 12 is a schematic diagram illustrating the definition of samples used by PDPC applied to diagonal-down-left mode;
[0023] FIG. 11C Figure 13 is a schematic diagram illustrating the definition of samples used by PDPC applied to adjacent diagonal-up-right mode;
[0024] FIG. 11D Figure 14 is a schematic diagram illustrating the definition of samples used by PDPC applied to adjacent diagonal-down-left mode;
[0025] FIG. 12 Figure 15 is a schematic diagram illustrating the gradient method for non-vertical / non-horizontal mode;
[0026] FIG. 13 Figure 16 is a schematic diagram illustrating nScale values with respect to nTbH and mode number; the gradient method is used for all cases where nScale < 0;
[0027] FIG. 14 Figure 17 is a schematic diagram illustrating a flowchart of current PDPC and proposed PDPC;
[0028] FIG. 15 Figure 18 is a schematic diagram illustrating neighboring blocks (L, A, BL, AR, AL) used in derivation of the general MPM list;
[0029] FIG. 16 Figure 19 is a schematic diagram illustrating an example of proposed intra reference mapping;
[0030] FIG. 17 Figure 20 is a schematic diagram illustrating an example of four reference lines adjacent to a prediction block;
[0031] FIG. 18A Figure 21 is a schematic diagram illustrating an example of sub-divisions for 4x8 and 8x4 CUs;
[0032] FIG. 18B Figure 22 is a schematic diagram illustrating an example of sub-divisions for CUs other than 4x8, 8x4 and 4x4;
[0033] FIG. 19 Figure 23 is a schematic diagram illustrating a matrix weighted intra prediction process;
[0034] FIG. 20 Figure 24 is a schematic diagram illustrating target samples, template samples and reference samples of a template used in DIMD;
[0035] FIG. 21 is a schematic diagram illustrating the proposed intra-block decoding process;
[0036] FIG. 22 is a schematic diagram showing the calculation of HoG from a template with a width of 3 pixels;
[0037] FIG. 23 is a schematic diagram illustrating prediction fusion by weighted averaging of two HoG modes and a plane;
[0038] FIG. 24 is a schematic diagram showing the spatial portion of a convolutional filter;
[0039] FIG. 25 is a schematic diagram showing a reference area (with its filling) for deriving filter coefficients;
[0040] FIG. 26 is a schematic diagram showing four Sobel-based gradient modes for GLM;
[0041] FIG. 27 is a schematic diagram showing spatial sample points for GL-CCCM;
[0042] FIG. 28 is a schematic diagram showing luma samples that have not been downsampled;
[0043] FIG. 29 The spatial GPM candidates are shown;
[0044] FIG. 30 A GPM template is shown;
[0045] FIG. 31 GPM mixing is shown;
[0046] FIG. 32 The figure shows the binarization of the cross-component prediction mode in ECM. "CCLM" in the figure can be replaced by "CCCM";
[0047] FIG. 33 shows an example of luminance samples to be prepared;
[0048] FIG. 34 Examples of potential candidate regions (shared blocks) are shown;
[0049] FIG. 35A to FIG. 35C Possible templates are shown respectively;
[0050] FIG. 36A to FIG. 36C Possible templates are shown respectively;
[0051] FIG. 37 Adjacent neighboring blocks are shown;
[0052] FIG. 38 a flowchart illustrating a method for video processing according to embodiments of the present disclosure; and
[0053] FIG. 39 a block diagram illustrating a computing device in which various embodiments of the present disclosure can be implemented.
[0054] Throughout the drawings, identical or similar reference numerals can designate identical or similar elements throughout the several views. DETAILED DESCRIPTION
[0055] The principles of the present disclosure will now be described with reference to some embodiments. It should be understood that the embodiments are described for illustrative purposes only and help the person skilled in the art to understand and implement the present disclosure, and do not imply any limitation on the scope of the present disclosure. The disclosure described herein can be implemented in various ways in addition to the ways described below.
[0056] In the following description and claims, unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs.
[0057] References in the present disclosure to "one embodiment", "an embodiment", "example embodiments", etc. indicate that the embodiment described can include a particular feature, structure, or characteristic, but every embodiment can not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an example embodiment, it is submitted that the embodiment is not limited to those particular features, structures, or characteristics, whether or not the particular features, structures, or characteristics are recited in any of the claims.
[0058] It should be understood that although the terms "first" and "second" can be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element without departing from the scope of the example embodiments. As used herein, the term "and / or" includes any and all combinations of one or more of the associated terms.
[0059] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of example embodiments. As used herein, the singular forms "a," "an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises," "comprising," "includes" and / or "including," when used herein, specify the presence of stated features, elements and / or components, but do not preclude the presence or addition of one or more other features, elements, components and / or combinations thereof. Example Environment
[0060] FIG. 1 is a block diagram illustrating an example video coding system 100 that can utilize the techniques of this disclosure. As illustrated, video coding system 100 can include a source device 110 and a destination device 120. Source device 110 can also be referred to as a video encoding device, and destination device 120 can also be referred to as a video decoding device. In operation, source device 110 can be configured to generate encoded video data, and destination device 120 can be configured to decode the encoded video data generated by source device 110. Source device 110 can include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0061] Video source 112 can include a source such as a video capture device. Examples of video capture devices include, but are not limited to, an interface to receive video data from a video content provider, a computer graphics system to generate video data, and / or a combination thereof.
[0062] Video data can include one or more pictures. Video encoder 114 encodes the video data from video source 112 to generate a bitstream. The bitstream can include a sequence of bits that form an encoded representation of the video data. The bitstream can include encoded pictures and associated data. An encoded picture is an encoded representation of a picture. The associated data can include sequence parameter sets, picture parameter sets, and other syntax structures. I / O interface 116 can include a modulator / demodulator and / or a transmitter. The encoded video data can be transmitted directly to destination device 120 by way of I / O interface 116, through network 130A. The encoded video data can also be stored onto a storage medium / server 130B for access by destination device 120.
[0063] Destination device 120 can include I / O interface 126, video decoder 124, and display device 122. I / O interface 126 can include a receiver and / or a modem. I / O interface 126 can acquire encoded video data from source device 110 or storage medium / server 130B. Video decoder 124 can decode encoded video data. Display device 122 can display the decoded video data to a user. Display device 122 can be integrated with destination device 120, or can be external to destination device 120, which is configured to interface with an external display device.
[0064] Video encoder 114 and video decoder 124 can operate according to a video compression standard, such as the High Efficiency Video Coding (HEVC) standard, Versatile Video Coding (VVC) standard, and other existing and / or future standards.
[0065] FIG. 2 is a block diagram illustrating an example of a video encoder 200 that can be FIG. 1 an example of video encoder 114 in system 100 shown.
[0066] Video encoder 200 can be configured to implement any or all of the techniques of this disclosure. In FIG. 2 In the example of FIG. 2, video encoder 200 includes a plurality of functional components. The techniques described in this disclosure can be shared by each of the components of video encoder 200. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.
[0067] In some embodiments, video encoder 200 can include partitioning unit 201, prediction unit 202, which can include mode select unit 203, motion estimation unit 204, motion compensation unit 205, and intra-prediction unit 206, residual generation unit 207, transform unit 208, quantization unit 209, inverse-quantization unit 210, inverse-transform unit 211, reconstruction unit 212, buffer 213, and entropy encoding unit 214.
[0068] In other examples, video encoder 200 can include more, less, or different functional components. In one example, prediction unit 202 can include an intra-block copy (IBC) unit. The IBC unit can perform prediction in an IBC mode in which at least one reference picture is the picture in which the current video block is located.
[0069] Furthermore, although some components, such as motion estimation unit 204 and motion compensation unit 205, can be integrated, for purposes of explanation, these components are shown as separate components in FIG. 2are shown separately in the example.
[0070] Partition unit 201 can partition a picture into one or more video blocks. Video encoder 200 and video decoder 300 can support various video block sizes.
[0071] Mode selection unit 203 can select one of a plurality of coding modes (intra- or inter-coding), e.g., based on the error results, and provide the resulting intra- or inter-coded block to residual generation unit 207 to generate residual block data and to reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, mode selection unit 203 can select a combined intra-inter prediction (CIIP) mode in which prediction is based on both an inter prediction signal and an intra prediction signal. In the case of inter prediction, mode selection unit 203 can also select a resolution for a motion vector (e.g., sub-pixel accuracy or integer pixel accuracy) for the block.
[0072] To perform inter prediction for a current video block, motion estimation unit 204 can generate motion information for the current video block by comparing one or more reference frames from cache 213 to the current video block. Motion compensation unit 205 can determine a predicted video block for the current video block based on the motion information and decoded samples of pictures from cache 213 other than the picture associated with the current video block.
[0073] Motion estimation unit 204 and motion compensation unit 205 can perform different operations for a current video block, e.g., depending on whether the current video block is in an I slice, a P slice, or a B slice. As used herein, an “I slice” can refer to a portion of a picture composed of macroblocks all of which are based on macroblocks within the same picture. Further, as used herein, in some aspects, a “P slice” and a “B slice” can refer to portions of a picture composed of macroblocks that are independent of macroblocks in the same picture.
[0074] In some examples, motion estimation unit 204 can perform uni-directional prediction for a current video block, and motion estimation unit 204 can search a reference picture of list 0 or list 1 for a reference video block for the current video block. Motion estimation unit 204 can then generate a reference index indicating the reference picture of list 0 or list 1 containing the reference video block and a motion vector indicating a spatial displacement between the current video block and the reference video block. Motion estimation unit 204 can output the reference index, a prediction direction indicator, and the motion vector as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current video block based on the reference video block indicated by the motion information for the current video block.
[0075] Alternatively, in other examples, the motion estimation unit 204 can perform bi-prediction for the current video block. The motion estimation unit 204 can search the reference pictures in list 0 for one reference video block for the current video block and also search the reference pictures in list 1 for another reference video block for the current video block. The motion estimation unit 204 can then generate a plurality of reference indices that indicate the plurality of reference pictures in list 0 and list 1 that contain the plurality of reference video blocks and a plurality of motion vectors that indicate a plurality of spatial displacements between the plurality of reference video blocks and the current video block. The motion estimation unit 204 can output the plurality of reference indices and the plurality of motion vectors for the current video block as motion information for the current video block. The motion compensation unit 205 can generate a predicted video block for the current video block based on the plurality of reference video blocks indicated by the motion information for the current video block.
[0076] In some examples, the motion estimation unit 204 can output a complete set of motion information for use in the decoding process at the decoder. Alternatively, in some embodiments, the motion estimation unit 204 can signal the motion information for the current video block with reference to the motion information of another video block. For example, the motion estimation unit 204 can determine that the motion information for the current video block is sufficiently similar to the motion information of a neighboring video block.
[0077] In one example, the motion estimation unit 204 can indicate a value in a syntax structure associated with the current video block that indicates to the video decoder 300 that the current video block has the same motion information as another video block.
[0078] In another example, the motion estimation unit 204 can identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference indicates a difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 can use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0079] As discussed above, the video encoder 200 can signal motion vectors in a predictive manner. Two examples of predictive signaling techniques that can be implemented by the video encoder 200 include advanced motion vector prediction (AMVP) and Merge mode signaling.
[0080] The intra prediction unit 206 can perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 can generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block can include a predicted video block and various syntax elements.
[0081] Residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by the minus sign) the prediction video block(s) from the current video block. The residual data for the current video block can include residual video blocks corresponding to different sample components of the samples in the current video block.
[0082] In other examples, such as in a skip mode, there can be no residual data for the current video block for the current video block, and residual generation unit 207 can not perform the subtraction operation.
[0083] Transform processing unit 208 can generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video blocks associated with the current video block.
[0084] Quantization unit 209 can quantize the transform coefficient video blocks associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block after transform processing unit 208 generates the transform coefficient video blocks associated with the current video block.
[0085] Inverse quantization unit 210 and inverse transform unit 211 can apply inverse quantization and inverse transform, respectively, to the transform coefficient video blocks to reconstruct the residual video blocks from the transform coefficient video blocks. Reconstruction unit 212 can add the reconstructed residual video blocks to corresponding samples from the prediction video block(s) generated by prediction unit 202 to produce a reconstructed video block associated with the current video block for storage in buffer 213.
[0086] Loop filtering operations can be performed to reduce video block artifacts in the video blocks after reconstruction unit 212 reconstructs the video blocks.
[0087] Entropy encoding unit 214 can receive data from other functional components of video encoder 200. When entropy encoding unit 214 receives data, entropy encoding unit 214 can perform one or more entropy encoding operations to generate entropy encoded data and output a bitstream that includes the entropy encoded data.
[0088] FIG. 3 FIG. 3 is a block diagram illustrating an example of a video decoder 300 that can be FIG. 1 of the video decoder 124 in the system 100 shown.
[0089] The video decoder 300 can be configured to perform any or all of the techniques of the present disclosure. In FIG. 3In examples of the video decoder 300, the video decoder 300 includes a number of functional components. The techniques described in this disclosure can be shared among the various components of the video decoder 300. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0090] In FIG. 3 In examples of the video decoder 300, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transformation unit 305, and a reconstruction unit 306 and buffer 307. In some examples, the video decoder 300 can perform a decoding process generally reciprocal to the encoding process described with respect to the video encoder 200.
[0091] The entropy decoding unit 301 can retrieve an encoded bitstream. The encoded bitstream can include entropy encoded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 can decode the entropy encoded video data and the motion compensation unit 302 can determine motion information from the entropy decoded video data, including motion vectors, motion vector precision, reference picture list index, and other motion information. The motion compensation unit 302 can determine such information, for example, by performing AMVP and Merge modes. AMVP is used including deriving a number of most probable candidates based on data from neighboring PBs and reference pictures. The motion information typically includes a horizontal motion vector displacement value and a vertical motion vector displacement value, one or two reference picture indices, and in the case of prediction regions in B slices, an identification of which reference picture list is associated with each index. As used herein, in some aspects, “Merge mode” can refer to deriving motion information from a spatially or temporally neighboring block.
[0092] The motion compensation unit 302 can generate a motion compensated block, possibly performing interpolation based on an interpolation filter. An identifier for the interpolation filter used at sub-pixel precision can be included in the syntax elements.
[0093] The motion compensation unit 302 can use the interpolation filter used by the video encoder 200 during encoding of the video block to calculate interpolated values for sub-integer pixels of the reference block. The motion compensation unit 302 can determine the interpolation filter used by the video encoder 200 from the received syntax information, and the motion compensation unit 302 can use the interpolation filter to generate the prediction block.
[0094] Motion compensation unit 302 can use at least some of the syntax information to determine the size of the blocks used to encode the frame(s) and / or slice(s) of the coded video sequence, partitioning information describing how each macroblock of a picture of the coded video sequence is partitioned, modes indicating how each partition is coded, one or more reference frames (and lists of reference frames) for each inter-coded block, and other information used to decode the coded video sequence. As used herein, in some aspects, a "slice" can refer to a data structure that can be decoded independently of other slices of the same picture in terms of entropy coding, signal prediction, and residual signal reconstruction. A slice can be an entire picture, or it can also be a region of a picture.
[0095] Intra prediction unit 303 can use, for example, intra prediction modes received in the bitstream to form a prediction block from spatial neighboring blocks. Dequantization unit 304 dequantizes quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 305 applies an inverse transform.
[0096] Reconstruction unit 306 can obtain a decoded block, for example, by adding the residual block to the corresponding prediction block generated by motion compensation unit 302 or intra prediction unit 303. If desired, a deblocking filter can also be applied to filter the decoded block in order to remove blockiness artifacts. The decoded video blocks are then stored in buffer 307, which provides reference blocks for subsequent motion compensation / intra prediction, and which also produces decoded video for presentation on a display device.
[0097] Some example embodiments of the present disclosure will be described in detail below. It should be noted that the use of section headings in this document is for convenience only and not to be construed as limiting the embodiments disclosed in that section to that section only. Furthermore, although some embodiments are described with reference to the versatile video coding or other specific video codec, the disclosed techniques are applicable to other video coding technologies as well. Moreover, although some embodiments describe video encoding steps in detail, it should be understood that corresponding decoding steps of the de- encoded would be implemented by a decoder. Furthermore, the term video processing includes video encoding or compression, video decoding or decompression, and video transcoding, in which video pixels are represented from one compression format to another compression format or at different compression bit rates. 1. BRIEF OVERVIEW The present disclosure relates to video coding techniques. In particular, it relates to cross-component prediction. It can be applied to existing video coding standards such as HEVC or Versatile Video Coding (VVC). It can also be applicable to future video coding standards or video codecs. 2. INTRODUCTION Video coding standards have evolved mainly through the development of the well-known ITU-T and ISO / IEC standards. The ITU-T produced H.261 and H.263 standards, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced the H.262 / MPEG-2 Video and H.264 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. From H.262, video coding standards are based on hybrid video coding structure, where temporal prediction is combined with transform coding. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was founded by VCEG and MPEG jointly in 2015. Since then, many new methods have been adopted by JVET and put into the reference software named Joint Exploration Test Model (JEM). In April 2018, the Joint Video Team (JVT) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was established, which is committed to the VVC standard, aiming to reduce 50% bit rate compared with HEVC. 2.1. Color Space and Chroma Subsampling A color space, also called a color model (or color system), is an abstract mathematical model intended to describe all the colors visible to the human eye. A color space simply describes the color range as a tuple of numbers, usually 3 or 4 values or color components (e.g. RGB). Basically, a color space is a refinement of a coordinate system and a subspace. For video compression, the most commonly used color spaces are YCbCr and RGB. YCbCr, Y'CbCr or Y Pb / Cb Pr / Cr, also written as YCBCR or Y'CBCR, is a family of color spaces used as part of the color image pipeline in video and digital photography systems. Y' is the luma component and CB and CR are the blue-difference and red-difference chroma components. Y' (with the prime) distinguishes from Y, Y is the luminance, meaning that the light intensity is encoded non-linearly based on the RGB primaries being gamma corrected. Chroma subsampling is the practice of encoding an image with lower resolution for chrominance information than for luminance information, exploiting the advantage that the human visual system is less sensitive to color differences than to luminance differences. 2.1.1. 4:4:4 Each of the three Y'CbCr components has the same sample rate, so there is no chroma subsampling. This scheme is sometimes used for high-end film scanners and in film post-production. 2.1.2. 4:2:2 The two chroma components are sampled at half the sampling rate of the luma: the horizontal chroma resolution is halved, while the vertical chroma resolution remains unchanged. This reduces the bandwidth of the uncompressed video signal by a factor of three, with little or no visual difference. An example of the nominal vertical and horizontal positions of 4:2:2 color format is depicted in FIG. 4 FIG. 4 The nominal vertical and horizontal positions of 4:2:2 luma and chroma samples in a picture are shown. 2.1.3.4:2:0 In 4:2:0, the horizontal sampling is doubled compared to 4:1:1, but the vertical resolution is halved since in this scheme the Cb and Cr channels are only sampled on every alternate line. The data rate is therefore the same. Cb and Cr are downsampled by a factor of 2 in both horizontal and vertical directions. There are three variants of the 4:2:0 scheme with different horizontal and vertical positioning. • In MPEG-2, Cb and Cr are co-located in the horizontal direction. Cb and Cr are located between the pixels in the vertical direction (located in the gap positions). • In JPEG / JFIF, H.261 and MPEG-1, Cb and Cr are located in the gap positions, in the middle of the alternate luma samples. • In 4:2:0 DV, Cb and Cr are co-located in the horizontal direction. In the vertical direction, Cb and Cr are co-located on alternate lines. Table 1 SubWidthC and SubHeightC values derived from chroma_format_idc and separate_colour_plane_flag chroma_format_idc separate_colour_plane_flag chroma format SubWidthC SubHeightC 0 0 monochrome 1 1 1 0 4:2:0 2 2 2 0 4:2:2 2 1 3 0 4:4:4 1 1 3 1 4:4:4 1 1 2.2. Coding process of a typical video codec FIG. 5 An example of an encoder of VVC is shown, which contains three in-loop filtering blocks: the Deblocking Filter (DF), Sample Adaptive Offset (SAO) and ALF. Unlike DF, which uses a pre-defined filter, SAO and ALF make use of the original samples of the current picture, by adding an offset and by applying a Finite Impulse Response (FIR) filter, respectively, and signalize the offset and filter coefficients using coded side information, to reduce the mean squared error between the original and the reconstructed samples. ALF is located at the last processing stage of each picture and can be seen as a tool trying to capture and fix artifacts caused by previous stages. 2.3. Intra mode coding with 67 intra prediction modes To capture arbitrary edge directions present in natural video, like FIG. 6 As shown, the number of directional intra modes is extended from 33 used in HEVC to 65, FIG. 6 67 intra prediction modes are shown, and the planar and DC modes remain unchanged. These more dense directional intra prediction modes are applied to all block sizes and for both luma intra prediction and chroma intra prediction. In HEVC, each intra coded block has a square shape, and each of its sides has a length that is a power of 2. Therefore, no division operation is needed to generate an intra prediction value using the DC mode. In VVC, blocks can have a rectangular shape, which in general case requires a division operation to be used for each block. To avoid the division operation for DC prediction, only the longer side is used to calculate the average value for non-square blocks. 2.3.1. Wide-angle intra prediction Although 67 modes are defined in VVC, the exact prediction direction for a given intra prediction mode index also depends on the block shape. The regular angular intra prediction directions are defined from 45 degrees to -135 degrees in a clockwise direction. In VVC, for non-square blocks, multiple regular angular intra prediction modes are adaptively replaced by wide-angle intra prediction modes. The replaced modes are signaled using the original mode index, which is remapped to the index of the wide-angle mode after parsing. The total number of intra prediction modes remains unchanged, i.e., 67, and the intra mode coding method remains unchanged. FIG. 7 Reference samples for wide-angle intra prediction are shown. To support these prediction directions, a top reference of length 2W+1 and a left reference of length 2H+1 are defined, as FIG. 7 shown. The number of replaced modes in the wide-angle direction modes depends on the aspect ratio of the block. The replaced intra prediction modes are shown in Table 2. Table 2 Intra prediction modes replaced by wide-angle modes aspect ratio replaced intra prediction mode W / H = = 16 modes 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 W / H = = 8 modes 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 W / H = = 4 modes 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 W / H = = 2 modes 2, 3, 4, 5, 6, 7, 8, 9 W / H = = 1 none W / H = = 1 / 2 modes 59, 60, 61, 62, 63, 64, 65, 66 W / H = = 1 / 4 modes 57, 58, 59, 60, 61, 62, 63, 64, 65, 66 W / H = = 1 / 8 modes 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66 W / H = = 1 / 16 modes 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66 FIG. 8 The problem of discontinuity in the case where the direction is more than 45° is shown. As FIG. 8 shown, in the case of wide-angle intra prediction, two vertically adjacent prediction samples can use two non-adjacent reference samples. Therefore, a low-pass reference sample filter and edge smoothing are applied to wide-angle prediction to reduce the increased gap Δp αthe negative impact of the wide-angle modes. If the wide-angle mode represents a non- fractional offset. There are 8 modes in the wide-angle mode that satisfy this condition, i.e., [-14, -12, -10, -6, 72, 76, 78, 80]. When a block is predicted by these modes, the samples in the reference buffer are directly copied without applying any interpolation. With this modification, the number of samples that need to be smoothed is reduced. In addition, it aligns the design of non-fractional modes in the regular prediction modes with the wide-angle modes. In VVC, 4:2:2 and 4:4:4 chroma formats are supported in addition to 4:2:0. The chroma derivation mode (DM) derivation table for 4:2:2 chroma format is originally ported from HEVC, with the number of entries extended from 35 to 67 to align with the extension of intra prediction modes. Since the HEVC specification does not support prediction angles lower than -135 degrees and higher than 45 degrees, the luma intra prediction mode range from 2 to 5 is mapped to 2. Therefore, the chroma DM derivation table for 4:2:2 chroma format is updated by replacing some values of the entries of the mapping table to convert the prediction angles for chroma blocks more accurately. 2.4. Intra prediction mode coding for chroma components For the chroma components of an intra PU, the encoder selects the best chroma prediction mode from the five modes including the direct copy of the intra prediction mode of the luma component, the planar, DC, horizontal, vertical, and the luminance components. The mapping between the intra prediction direction of the chroma and the intra prediction mode number is shown in Table 3. When the intra prediction mode number for the chroma component is 4, the intra prediction direction for the luma component is used for the intra prediction sample generation for the chroma component. When the intra prediction mode number for the chroma component is not 4 and it is the same as the intra prediction mode number for the luma component, the intra prediction direction of 66 is used for the intra prediction sample generation for the chroma component. 2.5. Inter prediction For each inter prediction CU, the motion parameters consist of the motion vector, the reference picture index and the reference picture list usage index, and additional information needed for the new coding features of VVC that will be used for inter prediction sample generation. The motion parameters can be signaled in an explicit or implicit manner. When a CU is coded in skip mode, the CU is associated with one PU and does not have significant residual coefficients, does not have coded motion vector difference or reference picture index. A Merge mode is specified, whereby the motion parameters for the current CU are derived from neighboring CUs, including spatial candidates and temporal candidates, and additional scheduling introduced in VVC. The Merge mode can be applied to any inter prediction CU, not only for skip mode. An alternative to the Merge mode is the explicit signaling of the motion parameters, where the motion vector, the corresponding reference picture index for each reference picture list and the reference picture list usage flag and other needed information are explicitly signaled for each CU. 2.6. Intra block copy (IBC) Intra block copy (IBC) is a tool adopted in the HEVC extension on SCC. It is well known that IBC significantly improves the coding efficiency for screen content material. Since IBC mode is implemented as a block-level coding mode, block matching (BM) is performed at the encoder to find the best block vector (or motion vector) for each CU. Here, the block vector is used to indicate the displacement from the current block to a reference block that has already been reconstructed inside the current picture. The luma block vector of an IBC-coded CU is in integer precision. The chroma block vector is also rounded to integer precision. When combined with AMVR, the IBC mode can switch between 1-pixel motion vector precision and 4-pixel motion vector precision. An IBC-coded CU is considered as a third prediction mode different from the intra prediction mode or the inter prediction mode. IBC mode is applicable to a CU whose width and height are both less than or equal to 64 luma samples. At the encoder side, hash-based motion estimation is performed for IBC. The encoder performs RD check on blocks whose width or height is not larger than 16 luma samples. For non-Merge mode, the block vector search is first performed using hash-based search. If the hash search does not return a valid candidate, a block matching based local search will be performed. In hash-based search, the hash key match (32-bit CRC) between the current block and the reference block is extended to all allowed block sizes. The hash key computation is based on 4x4 sub-blocks for each position in the current picture. For larger sizes of the current block, the hash key is determined to match the hash key of the reference block when all hash keys of all 4x4 sub-blocks match the hash keys in the corresponding reference positions. If multiple reference blocks' hash keys are found to match the hash key of the current block, the block vector cost of each matched reference is computed and the one with the minimum cost is selected. In block matching search, the search range is set to cover both the previous CTU and the current CTU. At CU level, IBC mode is signaled with a flag and it can be signaled as IBC AMVP mode or IBC Skip / Merge mode as follows: - IBC Skip / Merge mode: Merge candidate index is used to indicate which block vector from the list of neighboring candidate IBC coded blocks is used to predict the current block. The Merge list consists of spatial candidates, HMVP candidates and pairwise candidates. - IBC AMVP mode: Block vector difference is coded in the same way as motion vector difference. Block vector prediction method uses two candidates as the predictor, one from left neighbor and one from above neighbor if IBC coded. When either neighbor is not available, the default block vector will be used as the predictor. A flag is signaled to indicate the block vector predictor index. 2.7. Cross-component linear model prediction To reduce the cross-component redundancy, a cross-component linear model (CCLM) prediction mode is used in VVC, for which the chroma samples are predicted based on the reconstructed luma samples of the same CU by using the linear model as follows: pred C (i,j) = a - rec L '(i,j) + β (2-1) where pred C (i,j) denotes the predicted chroma samples in the CU, and rec L (i,j) denotes the down-sampled reconstructed luma samples of the same CU. The CCLM parameters (a and β) are derived with at most four neighboring chroma samples and the corresponding down-sampled luma samples of these neighboring chroma samples. Assuming the current chroma block dimension is WxH, W' and H' are set as - When LM mode is applied, W' = W, H' = H; - When LM_T mode is applied, W' = W+H; - When LM_L mode is applied, H' = H + W. The above neighboring positions are denoted as S[0,-1]...S[W'-1,-1], and the left neighboring positions are denoted as S[-1,0]...S[-1,H'-1]. Then four samples are selected as - When LM mode is applied and both above and left neighboring samples are available, S[W' / 4,-1], S[3*W' / 4,-1], S[-1,H' / 4], S[-1,3*H' / 4]; - When LM_T mode is applied or only above neighboring samples are available, S[W' / 8,-1], S[3*W' / 8,-1], S[5*W' / 8,-1], S[7*W' / 8,-1]; - When LM_L mode is applied or only left neighboring samples are available, S[-1,H' / 8], S[-1,3*H' / 8], S[-1,5*H' / 8], S[-1,7*H' / 8]. The four neighboring luma samples at the selected positions are down-sampled and compared four times to find two larger values: x 0 A and x 1 A and two smaller values: x 0 B and x 1 B . Their corresponding chroma sample values are denoted as y 0 A , y 1 A , y 0 B and y 1 B . Then x A , x B , y A and y B are derived as: X a = (x 0 A + x 1 A + 1) » 1; X b = (x 0 B + x 1 B + 1) » 1; Y a = (y 0 A + y 1 A + 1) » 1; Y b = (y 0B + y 1 B + 1) » 1 (2-2). Finally, the linear model parameters a and b are obtained according to the following formula. b = Y b - a - X b (2-4). FIG. 9 An example of the positions of the left and above samples involved in the CCLM mode and the samples of the current block is shown. FIG. 9 The positions of the samples used to derive a and b are shown. The division operations to compute the parameters a and b are implemented using a look-up table. To reduce the memory required to store this table, the diff value (difference between the maximum and minimum values) and the parameter a are represented by an exponential notation. For example, diff is approximated with a 4-bit significant part and an exponent. Thus, the table of 1 / diff is reduced to 16 elements for 16 values of the significant number, as follows: DivTable[] = {0, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 0} (2-5). This will have the advantage of reducing the complexity of the computation and the memory size required to store the table. In addition to the fact that the above template and the left template can be used together to compute the linear model coefficients, they can also be alternatively used in two other LM modes, called LM_T and LM_L modes. In the LM_T mode, only the above template is used to compute the linear model coefficients. To get more samples, the above template is extended to (W+H) samples. In the LM_L mode, only the left template is used to compute the linear model coefficients. To get more samples, the left template is extended to (H+W) samples. In the LM mode, the left template and the above template are used to compute the linear model coefficients. To match the chroma sample positions of 4:2:0 video sequences, two types of downsampling filters are applied to the luma samples to achieve a downsampling ratio of 2 to 1 in the horizontal and vertical directions. The selection of the downsampling filter is specified by an SPS level flag. The two downsampling filters are as follows, which correspond to the "Type 0" and "Type 2" content, respectively. Note that when the above reference line is located at a CTU boundary, only one luma row (general line buffer in intra prediction) is used to make the downsampled luma samples. This parameter calculation is performed as part of the decoding process, not just as an encoder search operation. As a result, no syntax is used to communicate the a and b values to the decoder. For chroma intra mode coding, a total of 8 intra modes are allowed for chroma intra mode coding. These modes include five regular intra modes and three cross component linear model modes (LM, LM_T and LM_L). The chroma mode signaling and derivation process is shown in Table 3. The chroma mode coding directly depends on the intra prediction mode of the corresponding luma block. Since separate block partitioning structure for luma component and chroma component is enabled in I slice, one chroma block can correspond to multiple luma blocks. Therefore, for chroma DM mode, the intra prediction mode of the corresponding luma block covering the center position of the current chroma block is directly inherited. Table 3 Derivation of chroma prediction mode from luma mode when CCLM is enabled As shown in Table 4, a single binarization table is used regardless of the value of sps_cclm_enabled_flag. Table 4 Unified binarization table for chroma prediction mode In Table 4, the first bin indicates whether it is regular (0) or LM mode (1). If it is LM mode, the next bin indicates whether it is LM_CHROMA (0). If it is not LM_CHROMA, the next 1 bin indicates whether it is LM_L (0) or LM_T (1). For this case, when sps_cclm_enabled_flag is 0, the first bin of the binarization table corresponding to intra_chroma_pred_mode can be discarded before entropy coding. Or in other words, the first bin is assumed to be 0 and thus not coded. This single binarization table is used for the case when sps_cclm_enabled_flag is equal to 0 and 1. The first two bins in Table 4 are context coded with their own context model and the remaining bins are bypass coded. In addition, to reduce the luma-chroma latency in dual tree, when a 64x64 luma coding tree node is split with Not Split (and ISP is not used for 64x64 CU) or QT, the chroma CUs in 32x32 / 32x16 chroma coding tree nodes are allowed to use CCLM in the following way: - If the 32x32 chroma node is not split or split with QT split, all chroma CUs in the 32x32 node can use CCLM. - If the 32x32 chroma node is split by horizontal BT, and the 32x16 sub-nodes are not split or split by vertical BT, all chroma CUs in the 32x16 chroma node can use CCLM. Under all other luma and chroma coding tree partitioning conditions, CCLM is not allowed for chroma CUs. 2.8. Multiple Model Linear Model (MMLM) With MMLM, there can be more than one linear model between luma and chroma samples in a CU. In this method, neighboring luma samples and neighboring chroma samples of the current block are classified into several groups, each of which is used as a training set to derive a linear model (i.e., a particular a and b is derived for a particular group). In addition, the samples of the current luma block are also classified based on the same rule as the classification of the neighboring luma samples. The neighboring samples can be classified into M groups, where M is 2 or 3. In addition to the original LM mode, the MMLM method with M=2 and M=3 is designed as two additional chroma prediction modes, referred to as MMLM2 and MMLM3. The encoder selects the best mode in the RDO process and signals the mode. When M is equal to 2, FIG. 10 An example of classifying neighboring samples into two groups is shown. The threshold is calculated as the average of the neighboring reconstructed luma samples. Rec L [x,y] <= threshold Rec L [x,y] > threshold Rec The threshold is the average of the neighboring reconstructed luma samples. The linear model for each class is derived by using the least mean square (LMS) method if enabled, or using the min / max method of VVC. 2.9. Position Dependent Intra Prediction Combination In VVC, the results of the intra prediction of the DC, Planar and multiple angular modes are further modified by the Position Dependent Intra Prediction Combination (PDPC) method. PDPC is an intra prediction method that invokes a combination of the HEVC-style intra prediction with and without filtered boundary reference samples. PDPC is applied to the following intra modes without being signaled: Planar, DC, intra angular smaller than or equal to horizontal, and intra angular greater than or equal to vertical and smaller than or equal to 80. PDPC is not applied if the current block is in BDPCM mode or the MRL index is greater than 0. The prediction sample pred(x',y') is predicted using an intra prediction mode (DC, Planar, Angles) and a linear combination of reference samples according to the following equations 2-8: pred(x',y') = Clip(0, (1 « BitDepth) - 1, (wL x R -1,y ' + wT x R x ' ,-1 + (64 - wL - wT) x pred(x',y') + 32) » 6) (2-9) where R x,-1 , R -1,y denote the reference samples located at the top and left side boundaries of the current sample (x,y), respectively. If PDPC is applied for DC, Planar, Horizontal and Vertical intra modes, the additional boundary filter is not necessary as required in the case of the HEVC DC mode boundary filter or the horizontal / vertical mode edge filter. The PDPC process is the same for DC mode and Planar mode. For the Angles modes, if the current angle mode is HOR IDX or VER IDX, the left reference sample or the top reference sample is not used, respectively. The PDPC weights and scaling factors depend on the prediction mode and the size of the block. PDPC is applied to blocks whose width and height are both greater than or equal to 4. FIG. 11A is a schematic diagram showing the definition of the samples used by the PDPC applied to the diagonal right-up mode. FIG. 11B is a schematic diagram showing the definition of the samples used by the PDPC applied to the diagonal left-down mode. FIG. 11C is a schematic diagram showing the definition of the samples used by the PDPC applied to the adjacent diagonal right-up mode. FIG. 11D is a schematic diagram showing the definition of the samples used by the PDPC applied to the adjacent diagonal left-down mode. FIG. 11A to FIG. 11D shows the definition of the reference samples (R x,-1 and R -1,y ) used by the PDPC applied to various prediction modes. The prediction sample pred(x',y') is located at (x',y') within the prediction block. For example, the coordinates x of the reference sample R x,-1 are given by the following equation: x = x' + y' + 1, and the coordinates y of the reference sample R -1,y are similarly given by the following equation: y = x' + y' + 1 (for diagonal modes). For other angle modes, the reference samples R x,-1 and R -1,y may be located at fractional sample positions. In this case, the sample values of the nearest integer sample positions are used. 2.10. Gradient PDPC As FIG. 12 illustrated, the gradient-based approach is extended for non-vertical / non-horizontal modes. Here, the gradient is computed as r(-1,y) - r(-1+d,-1), where d is a horizontal displacement that depends on the angular direction. A few points need to be noted here: The gradient term r(-1,y) - r(-1+d,-1) needs to be computed once per line, as it does not depend on the x-position. The computation of d is already part of the original intra prediction process that can be reused, so d does not need to be computed separately. Thus, d has a 1 / 32-pel precision. When d is at a fractional position, a two-tap (linear) filter is used, i.e., if dPos is the displacement in 1 / 32-pel precision, dInt is the integer part (dPos » 5) and dFract is the fractional part (dPos & 31) in 1 / 32-pel precision, then r(-1+d) is computed as: r(-1+d) = (32 - dFrac) * r(-1+dInt) + dFrac * r(-1+dInt+1). As explained in a, this 2-tap filter is performed once per line (if needed). Finally, the prediction signal is computed. p(x,y) = Clip(((64 - wL(x)) * p(x,y) + wL(x) * (r(-1,y) - r(-1+d,-1)) + 32) » 6) with wL(x) = 32 » ((x « 1) » nScale2) and nScale2 = (log2(nTbH) + log2(nTbW) - 2) » 2, which is the same as for the vertical / horizontal modes. In short, the same process is applied as for the vertical / horizontal modes (indeed, d = 0 indicates the vertical / horizontal modes). Second, the gradient-based way is activated for non-vertical / non-horizontal modes when (nScale < 0) or when PDPC cannot be applied due to unavailability of secondary reference samples. We have shown in FIG. 13 the nScale values with respect to the TB size and the angular mode to better visualize the cases where the gradient way is used. Additionally, in FIG. 14 we have shown the flowcharts for the current PDPC and the proposed PDPC. FIG. 14 is a schematic diagram showing the flowcharts for the current PDPC (left) and the proposed PDPC (right). 2.11. Secondary MPM The existing primary MPM (PMPM) list consists of 6 entries, and the secondary MPM (SMPM) list includes 16 entries. First, a general MPM list with 22 entries is constructed, then the first 6 entries in the general MPM list are included into the PMPM list, and the remaining entries form the SMPM list. The first entry in the general MPM list is the planar mode. The remaining entries consist of the intra modes of the left (L), above (A), below left (BL), above right (AR), and above left (AL) neighboring blocks as shown in FIG. 15 If the CU block is vertically oriented, the order of the neighboring blocks is A, L, BL, AR, AL; otherwise, the order of the neighboring blocks is L, A, BL, AR, AL. The PMPM flag is first parsed, if equal to 1, the PMPM index is parsed to determine which entry of the PMPM list is selected, otherwise the SPMPM flag is parsed to determine whether to parse the SMPM index or the remaining modes. 2.12.6 Tap intra interpolation filter To improve the prediction accuracy, it is proposed to replace the 4-tap cubic interpolation filter with a 6-tap interpolation filter, the filter coefficients are derived based on the same polynomial regression model, but the polynomial order is 6. The filter coefficients are shown as follows, { 0, 0, 256, 0, 0, 0}, / / 0 / 32 position { 0, -4, 253, 9, -2, 0}, / / 1 / 32 position { 1, -7, 249, 17, -4, 0}, / / 2 / 32 position { 1, -10, 245, 25, -6, 1}, / / 3 / 32 position { 1, -13, 241, 34, -8, 1}, / / 4 / 32 position { 2, -16, 235, 44, -10, 1}, / / 5 / 32 position { 2, -18, 229, 53, -12, 2}, / / 6 / 32 position { 2, -20, 223, 63, -14, 2}, / / 7 / 32 position { 2, -22, 217, 72, -15, 2}, / / 8 / 32 position { 3, -23, 209, 82, -17, 2}, / / 9 / 32 position { 3, -24, 202, 92, -19, 2}, / / 10 / 32 position {3,-25, 194, 101,-20, 3}, / / 11 / 32 positions {3,-25, 185, 111,-21, 3}, / / 12 / 32 positions {3,-26, 178, 121,-23, 3}, / / 13 / 32 positions {3,-25, 168, 131,-24, 3}, / / 14 / 32 positions {3,-25, 159, 141,-25, 3}, / / 15 / 32 positions {3,-25, 150, 150,-25, 3}, / / Half-pel positions The reference samples for interpolation are either from reconstructed samples or padded as in HEVC, so that the condition check for reference sample availability is not necessary. Instead of using a nearest-integer operation, a 4-tap cubic interpolation filter is proposed to derive the extended intra reference samples. As shown in the example in FIG. 16 To derive the value of the reference sample P, a four-tap interpolation filter is used, while in JEM-3.0 or HM, P is directly set to X1. 2.13. Multiple reference line (MRL) intra prediction Multiple reference line (MRL) intra prediction uses more reference lines for intra prediction. In FIG. 17 In, an example of 4 reference lines is depicted, where the samples of segment A and segment F are not taken from reconstructed neighboring samples, but are padded with the closest samples from segment B and segment E, respectively. HEVC intra picture prediction uses the closest reference line (i.e. reference line 0). In MRL, 2 additional lines (reference line 1 and reference line 2) are used. The index of the selected reference line (mrl idx) is signaled and used to generate the intra prediction value. For a reference line index larger than 0, only the additional reference line modes are included in the MPM list and only the MPM indices are signaled, while the remaining modes are not signaled. The reference line index is signaled before the intra prediction mode and in case a non-zero reference line index is signaled, the planar mode is excluded from the intra prediction mode. MRL is disabled for the first row of blocks inside a CTU to prevent the use of extended reference samples outside the current CTU row. In addition, PDPC is disabled when additional rows are used. For MRL mode, the derivation of the DC value in the DC intra prediction mode for non-zero reference line indices is aligned with the derivation for reference line index 0. MRL requires storage of 3 neighboring luma reference lines and the CTU to generate the prediction. The Cross Component Linear Model (CCLM) tool also requires 3 neighboring luma reference lines for its down-sampling filter. The definition of MRL using the same 3 lines is aligned with CCLM to reduce the storage requirement at the decoder. 2.14. Intra Sub Partition (ISP) Intra Sub Partition (ISP) divides a luma intra prediction block vertically or horizontally into 2 or 4 sub partitions depending on the block size. For example, the minimum block size for ISP is 4x8 (or 8x4). If the block size is larger than 4x8 (or 8x4), the corresponding block is divided by 4 sub partitions. It has been noted that Mx128 (with M < 64) and 128xN (with N < 64) ISP blocks can generate potential issues with 64x64 VDPU. For example, Mx128 CU in single tree case has Mx128 luma TB and two corresponding chroma TBs. If the CU uses ISP, the luma TB will be divided into four Mx32 TBs (only horizontal division is possible), each of which is smaller than 64x64 block. However, in the current ISP design, the chroma blocks are not divided. Therefore, both chroma components will have a size larger than 32x32 block. Similarly, 128xN CU using ISP can cause a similar situation. Therefore, these two cases are problematic for 64x64 decoder pipeline. For this reason, the CU size that can use ISP is limited to maximum 64x64. FIG. 18A and FIG. 18B Examples are shown for both possibilities. All sub partitions satisfy the condition of having at least 16 samples. In ISP, the dependency of 1xN / 2xN subblock prediction on the reconstructed values of previously decoded 1xN / 2xN subblocks of a coded block is not allowed, so that the minimum prediction width of a subblock becomes 4 samples. For example, an 8xN (N>4) coded block coded using ISP with vertical partitioning is partitioned into two prediction regions of size 4xN and four transforms of size 2xN. Furthermore, a 4xN coded block coded using ISP with vertical partitioning is predicted using the full 4xN block; four 1xN transforms are used. Although 1xN and 2xN transform sizes are allowed, it is asserted that the transforms of these blocks in the 4xN region can be performed in parallel. For example, when the 4xN prediction region contains four 1xN transforms, there are no transforms in the horizontal direction; the transforms in the vertical direction can be performed as a single 4xN transform in the vertical direction. Similarly, when the 4xN prediction region contains two 2xN transform blocks, the transform operations on the two 2xN blocks in each direction (horizontal and vertical) can be done in parallel. Thus, processing these smaller blocks does not increase the latency compared to processing 4x4 regular intra coded blocks. FIG. 18A FIG. 4 is a diagram illustrating an example of sub-partitioning for 4x8 and 8x4 CUs. FIG. 18B FIG. 5 is a diagram illustrating an example of sub-partitioning for CUs other than 4x8, 8x4, and 4x4. Table 5 Entropy coded coefficient group sizes block size coefficient group size 1 x N, N > 16 1×16 N x 1, N > 16 16×1 2 x N, N > 8 2×8 N x 2, N > 8 8×2 all other possible M x N cases 4×4 For each sub-partition, the reconstructed samples are obtained by adding a residual signal to a prediction signal. Here, the residual signal is generated by processes such as entropy decoding, inverse quantization, and inverse transform. Thus, the reconstructed sample values of each sub-partition are available for generating the prediction of the next sub-partition, and each sub-partition is processed repeatedly. In addition, the first sub-partition to be processed is the one containing the top-left sample of the CU, and then continues down (horizontal partitioning) or to the right (vertical partitioning). As a result, the reference samples used to generate the sub-partition prediction signal are only located to the left and above the line. All sub-partitions share the same intra mode. The following is an overview of the interaction of ISP with other coding tools. - Multiple reference lines (MRL): If the block has an MRL index other than 0, the ISP coding mode will be assumed to be 0, so the ISP mode information will not be sent to the decoder. - Entropy coded coefficient group sizes: The sizes of the entropy coded subblocks have been modified so that they have 16 samples in all possible cases, as shown in Table 5. Note that the new sizes only affect the blocks resulting from ISP where one dimension is less than 4 samples. In all other cases, the coefficient groups remain 4x4 dimension. - CBF coding: It is assumed that at least one sub-partition has a non-zero CBF. Thus, if n is the number of sub-partitions and the first n-1 sub-partitions have resulted in zero CBF, the CBF of the n-th sub-partition is assumed to be 1. - Transform size restriction: All ISP transforms with a length larger than 16 points use DCT-II. - MTS flag: If a CU uses the ISP coding mode, the MTS CU flag will be set to 0 and the flag will not be sent to the decoder. Thus, the encoder will not perform the RD test for each of the different available transforms of each resulting sub-partition. Instead, the transform selection for the ISP mode will be fixed and selected according to the utilized intra mode, the processing order and the block size. Thus, no signaling is needed. For example, let t H and t V be the selected horizontal and vertical transform for w x h and sub-partition, respectively, where w and h are the width and height, respectively. Then the transform is selected according to the following rules: - If w = 1 or h = 1, there is no horizontal or vertical transform, respectively. - If w > 4 and w < 16, t H = DST-VII, else, t H = DCT-II. - If h > 4 and h < 16, t V = DST-VII, else, t V = DCT-II. In the ISP mode, all 67 intra prediction modes are allowed. PDPC is also applied if the corresponding width and height are at least 4 samples long. In addition, the condition for reference sample filtering process (reference smoothing) and intra interpolation filter selection no longer exist and in the ISP mode, the cubic (DCT-IF) filter is always applied for fractional position interpolation. 2.15. Matrix weighted intra prediction (MIP) The matrix weighted intra prediction (MIP) method is a newly added intra prediction technique in VVC. To predict the samples of a rectangular block with width W and height H, the matrix weighted intra prediction (MIP) takes as input one row of H reconstructed neighboring boundary samples to the left of the block and one row of W and reconstructed neighboring boundary samples above the block. If a reconstructed sample is not available, the reconstructed samples generate them in the same way as in regular intra prediction. The generation of the prediction signal is based on the following three steps, i.e., averaging, matrix vector multiplication, and linear interpolation, as shown in FIG. 19 . 2.15.1. Averaging of neighboring samples In the boundary samples, four samples or eight samples are selected by averaging based on the block size and shape. Specifically, according to a predefined rule depending on the block size, the input boundary bdry top and bdry left are reduced to smaller boundary and Then, the two reduced boundary and are stitched to the reduced boundary vector bdry red Thus, for a block with shape 4x4, bdry red has size 4, while for all other shapes of blocks, bdry red has size 8. If mode refers to the MIP mode, the stitching is defined as follows: 2.15.2. Matrix multiplication With the averaged samples as input, a matrix vector multiplication is performed, followed by an offset addition. The result is a reduced prediction signal on a down-sampled set of samples in the original block. From the reduced input vector bdry red and the reduced prediction signal pred red is generated, pred red and is a signal on a down-sampled block of width W red and height H red Here, W red and H red are defined as: The reduced prediction signal pred red is computed by computing a matrix vector product and adding an offset: pred red = A - bdry red + b (2-13) Here, if W = H = 4, A is a matrix with W red H red rows and 4 columns, and in all other cases a matrix with 8 columns. b is a vector of size W red H red H red The matrix A and the offset vector b are taken from one of the sets S0, S1, S2. The index idx = idx(W, H) is defined as follows: Here, each coefficient of the matrix A is represented with 8-bit precision. The set S0 consists of 16 matrices and 16 offset vectors Each matrix has 16 rows and 4 columns, and each offset vector has size 16. The matrices and offset vectors of the set are used for blocks of size 4x4. Set S1 consists of 8 matrices and 8 offset vectors Each matrix has 16 rows and 8 columns, and each offset vector has size 16. Set S2 consists of 6 matrices and 6 offset vectors Each matrix has 64 rows and 8 columns, and each offset vector has size 64. 2.15.3. Interpolation The prediction signal at the remaining positions is generated from the prediction signal on the down-sampled set by linear interpolation, which is a single step linear interpolation in each direction. The interpolation is performed first in the horizontal direction and then in the vertical direction, regardless of the block shape or block size. 2.15.4. Signaling of MIP mode and coordination with other coding tools For each coding unit (CU) in intra mode, a flag is signaled indicating whether MIP mode is to be applied or not. If MIP mode is to be applied, the MIP mode (predModeIntra) is signaled. For MIP mode, a flag (isTransposed) is determined whether the mode is transposed or not, and a MIP mode Id (modeId) is derived which determines which matrix is to be used for the given MIP mode, as follows isTransposed = predModeIntra & 1 modeId = predModeIntra » 1 (2-15) The MIP coding mode is coordinated with other coding tools by taking the following aspects into account: - For MIP on large blocks, LFNST is enabled. Here, the LFNST transform for the planar mode is used. - The reference sample derivation for MIP is performed exactly the same as for regular intra prediction modes. - For the up-sampling step used in MIP prediction, the original reference samples are used, instead of the down-sampled reference samples. - Clipping is performed before up-sampling, instead of after up-sampling. - MIP is allowed up to 64x64, regardless of the maximum transform size. The number of MIP modes is 32 for sizeId = 0, 16 for sizeId = 1, and 12 for sizeId = 2. 2.16. Decoder-side intra mode derivation In JEM-2.0, the intra mode is extended from 35 modes in HEVC to 67 modes, and they are derived at the encoder and explicitly signaled to the decoder. In JEM-2.0, a large amount of overhead is spent on intra mode coding. For example, in the all-intra coding configuration, the intra mode signaling overhead can be as high as 5-10% of the total bitrate. This contribution proposes a decoder-side intra mode derivation approach to reduce the intra mode coding overhead while maintaining the prediction accuracy. To reduce the overhead of intra mode signaling, this contribution proposes a decoder-side intra mode derivation (DIMD) method. In the proposed method, instead of explicitly signaling the intra mode, information is derived at both the encoder and the decoder from the neighboring reconstructed samples of the current block. The intra mode derived by DIMD is used in two ways: 1) For 2Nx2N CUs, when the corresponding CU-level DIMD flag is turned on, the DIMD mode is used as the intra mode for intra prediction; 2) For NxN CUs, the DIMD mode is used to replace one candidate of the existing MPM list to improve the efficiency of intra mode coding. 2.16.1. Template-based intra mode derivation FIG. 20 is a schematic diagram showing the target sample, the template sample, and the reference sample of the template used in DIMD. As shown in FIG. 20 , the target denotes the current block (block size N) for which the intra prediction mode will be estimated. The template (indicated by the patterned region in FIG. 20 ) specifies a set of already reconstructed samples that are used to derive the intra mode. The template size is denoted as the number of samples within the template that are extended to the top and left side of the target block, i.e., L. In the current implementation, template size 2 (i.e., L = 2) is used for 4x4 and 8x8 blocks, and template size 4 (i.e., L = 4) is used for 16x16 and larger blocks. The reference (indicated by the dashed region in FIG. 20 ) of the template refers to a set of neighboring samples from the top and left side of the template defined by JEM-2.0. Unlike the template samples that are always from the reconstructed region, the reference samples of the template can not have been reconstructed when the target block is being encoded / decoded. In this case, the existing reference sample replacement algorithm of JEM-2.0 is utilized to replace the unavailable reference samples with the available ones. For each intra prediction mode, DIMD calculates the sum of absolute difference (SAD) between the reconstructed template samples and the predicted samples it obtains from the reference samples of the template. The intra prediction mode that produces the smallest SAD is selected as the final intra prediction mode for the target block. 2.16.2. DIMD for Intra 2Nx2N CUs For intra 2Nx2N CUs, DIMD is used as an additional intra mode that is adaptively selected by comparing the DIMD intra mode with the best normal intra mode (i.e., the intra mode that is explicitly signaled in the bitstream). For each intra 2Nx2N CU, a flag is signaled to indicate the usage of DIMD. If the flag is 1, the CU is predicted using the intra mode derived by DIMD; otherwise, DIMD is not applied and the CU is predicted using the intra mode that is explicitly signaled in the bitstream. When DIMD is enabled, the chroma components always reuse the same intra mode as the one derived for the luma component, i.e., the DM mode. Additionally, for each DIMD-coded CU, the blocks in the CU can adaptively choose to derive their intra mode at the PU level or the TU level. Specifically, when the DIMD flag is 1, another CU-level DIMD control flag is signaled to indicate at which level DIMD is performed. If the flag is 0, it means that DIMD is performed at the PU level and all TUs in the PU use the same derived intra mode for their intra prediction; otherwise (i.e., the DIMD control flag is 1), it means that DIMD is performed at the TU level and each TU in the PU derives its own intra mode. Furthermore, when DIMD is enabled, the number of angular directions is increased to 129, and the DC mode and the planar mode remain unchanged. To accommodate the increased granularity of angular intra modes, the precision of the intra interpolation filter for DIMD-coded CUs is increased from 1 / 32 pixel to 1 / 64 pixel. Additionally, to use the derived intra mode of a DIMD-coded CU as an MPM candidate for neighboring intra blocks, the 129 directions of the DIMD-coded CU are converted to “normal” intra modes (i.e., 65 angular intra directions) before being used as MPMs. 2.16.3. DIMD for Intra NxN CUs In the proposed method, the intra mode of an intra NxN CU is always signaled. However, to improve the efficiency of the intra mode coding, the intra mode derived from DIMD is used as an MPM candidate for predicting the intra modes of the four PUs in the CU. To not increase the overhead of the MPM index signaling, the DIMD candidate is always placed in the first position in the MPM list and the last existing MPM candidate is removed. Furthermore, a de-duplication operation is performed so that the DIMD candidate will not be added to the MPM list if it is redundant. 2.16.4. Intra mode search algorithm for DIMD To reduce the encoding / decoding complexity, a direct fast intra mode search algorithm is used for DIMD. First, an initial estimation process is performed to provide a good starting point for the intra mode search. Specifically, an initial candidate list is created by selecting N fixed modes from the allowed intra modes. Then, SAD is calculated for all candidate intra modes and the one with the minimum SAD is selected as the starting intra mode. To achieve a good complexity / performance trade-off, the initial candidate list consists of 11 intra modes, including DC, Planar and every 4th mode of the 33 angular intra directions as defined in HEVC, i.e. intra modes 0, 1, 2, 6, 10...30, 34. If the starting intra mode is DC or Planar, it is used as the DIMD mode. Otherwise, based on the starting intra mode, a refinement process is then applied where the optimal intra mode is identified through an iterative search. It works by comparing the SAD values of three intra modes separated by a given search interval at each iteration and maintaining the intra mode with the minimum SAD. The search interval is then reduced by half and the selected intra mode from the last iteration will be used as the center intra mode for the current iteration. For the current DIMD implementation with 129 angular intra directions, at most 4 iterations are used in the refinement process to find the optimal DIMD intra mode. 2.17. Decoder-side intra mode derivation by computing gradients of neighboring samples Three angular modes are selected from a histogram of gradients (HoG) computed from the neighboring pixels of the current block. Once the three modes are selected, their prediction values are normally computed and then a weighted average of the prediction values is used as the final prediction value for the block. To determine the weights, the corresponding amplitudes in the HoG are used for each of the three modes. The DIMD mode is used as an alternative prediction mode and is always checked in the FullRD mode. The current version of DIMD has modified some aspects of the signaling, HoG computation and prediction merging. The purpose of this modification is to improve the coding performance as well as to address the complexity issues raised during the last meeting (i.e. 4x4 block throughput). The following sections describe the modification of each aspect. 2.17.1. Signaling FIG. 21 is a schematic diagram showing the proposed intra block decoding process. FIG. 21 shows the order of parsing flags / indices integrated in VTM5 with the proposed DIMD. As can be seen, the DIMD flag of a block is first parsed using a single CABAC context which is initialized to the default value 154. If the flag == 0, the parsing continues normally. Otherwise (if the flag == 1), only the ISP index is parsed and the following flags / indices are assumed to be zero: BDPCM flag, MIP flag, MRL index. In this case, the entire IPM parsing is also skipped. During the parsing phase, when a regular non-DIMD block inquires the IPM of its DIMD neighbor, the mode PLANAR IDX is used as a virtual IPM of the DIMD block. 2.17.2. Texture analysis FIG. 22 is a schematic diagram showing the HoG computation from a 3-pixel wide template. The texture analysis of DIMD includes a histogram of gradients (HoG) computation ( FIG. 22 ). The HoG computation is performed by applying horizontal and vertical Sobel filters to the pixels in a 3-wide template around the block. Except that, if the above template pixels fall into a different CTU, they will not be used in the texture analysis. Once computed, the IPM corresponding to the two highest histogram bars is selected for the block. In the previous version, all pixels in the middle row of the template participated in the HoG computation. However, the current version improves the throughput of this process by applying the Sobel filters more sparsely on 4x4 blocks. To this end, only one pixel from the left and one pixel from the above are used. This is shown in FIG. 22 . In addition to reducing the number of operations used for gradient computation, this feature also simplifies the selection of the best 2 modes from the HoG, since the resulting HoG cannot have more than two non-zero amplitudes. 2.17.3. Prediction merging The current method uses a fusion of three prediction values for each block. However, the selection of the prediction mode is different and exploits the assumption of the proposed combined intra prediction method where the planar mode is considered to be used in combination with other modes when computing the intra prediction candidates. In the current version, the two IPM corresponding to the two highest HoG strips are combined with the planar mode. The prediction fusion is applied as a weighted average of the above three prediction values. For this, the weight of the planar is fixed to 21 / 64 (~ 1 / 3). The remaining weight of 43 / 64 (~ 2 / 3) is then shared between the two HoG IPM, proportionally to the magnitude of their HoG strips. FIG. 23 This process is visualized. FIG. 23 is a schematic diagram illustrating the prediction fusion by weighted average of the two HoG modes and the planar. 2.18. Template-based Intra Mode Derivation (TIMD) This contribution proposes a template-based intra mode derivation (TIMD) method using MPMs, where a neighboring template is used to derive a TIMD mode from the MPMs. The TIMD mode is used as an additional intra prediction method for a CU. 2.18.1. TIMD mode derivation For each intra prediction mode in the MPMs, the SATD between the predicted samples of the template and the reconstructed samples is computed. The intra prediction mode with the smallest SATD is selected as the TIMD mode and is used for the intra prediction of the current CU. The position-dependent intra prediction combination (PDPC) is included in the derivation of the TIMD mode. 2.18.2. TIMD signaling A flag is signaled in the sequence parameter set (SPS) to enable / disable the proposed method. When the flag is true, a CU-level flag is signaled to indicate whether the proposed TIMD method is used or not. The TIMD flag is signaled immediately after the MIP flag. If the TIMD flag is equal to true, the remaining syntax elements related to the luma intra prediction modes (including MRL, ISP and the normal parsing stage for the luma intra prediction modes) are all skipped. 2.18.3. Interaction with new coding tools The DIMD method with prediction fusion using the planar is integrated in EE2. When the EE2 DIMD flag is equal to true, the proposed TIMD flag is not signaled and is set equal to false. Similar to PDPC, the gradient PDPC is also included in the derivation of the TIMD mode. When the sub- MPM is enabled, both the main MPM and the sub- MPM are used to derive the TIMD mode. 6 The 6-tap interpolation filter is not used for the derivation of the TIMD mode. 2.18.4. Modification of MPM list construction in the derivation of the TIMD mode During the construction of the MPM list, the intra prediction mode of the neighboring blocks is derived as planar when they are inter coded. To improve the accuracy of the MPM list, when the neighboring blocks are inter coded, the propagated intra prediction mode is derived using the motion vector and the reference picture and is used in the construction of the MPM list. This modification is applied only for the derivation of the TIMD mode. 2.18.5. TIMD with blending Instead of selecting only one mode with the smallest SATD cost, this contribution proposes to select the first two modes with the smallest SATD cost for the intra modes derived using the TIMD method, then blend them with weights, and such a weighted intra prediction is used to code the current CU. The cost of the two selected modes is compared with a threshold, in the test the cost factor 2 is applied as follows: costMode2 < 2 x costMode1. If the condition is true, blending is applied, otherwise only mode1 is used. The weights of the modes are computed from their SATD cost as follows: weight1 = costMode2 / (costMode1 + costMode2), weight2 = 1 - weight1. 2.19. Convolutional Cross-Component Model (CCCM) for Intra Prediction It is proposed to apply a Convolutional Cross-Component Model (CCCM) to predict chroma samples from reconstructed luma samples in a similar spirit as done by the current CCLM mode. As for CCLM, when chroma downsampling is used, reconstructed luma samples are downsampled to match the lower resolution chroma grid. In addition, similarly to CCLM, there is an option to use a single model or a multi-model variant of the CCCM. The multi-model variant uses two models, one model is derived for samples above the average luma reference value and the other model is derived for the remaining samples (following the spirit of the CCLM design). The multi-model CCCM mode can be selected for PUs with at least 128 available reference samples. 2.19.1. Convolutional filter The proposed convolutional 7-tap filter consists of a 5-tap plus sign-shaped spatial component, a non-linear term and a bias term. The input of the spatial 5-tap component of the filter consists of the center (C) luma sample co-located with the chroma sample to be predicted and its above / north (N), below / south (S), left / west (W) and right / east (E) neighbors, as shown in FIG. 24 , FIG. 24 The spatial part of the convolutional filter is shown. The non-linear term P is expressed as the square of the center luma sample C and scaled to the sample value range of the content: P = (C * C + midVal) » bitDepth. I.e. for 10-bit content it is calculated as: P = (C * C + 512) » 10. The bias term B represents a scalar offset between input and output (similar to the offset term in CCLM) and is set to the mid-chroma value (512 for 10-bit content). The output of the filter is calculated as the convolution between the filter coefficients c i and the input values, and is clipped to the range of valid chroma samples: predChromaVal = c0C + c1N + c2S + c3E + c4W + c5P + c6B. 2.19.2. Calculation of filter coefficients The filter coefficients c i are calculated by minimizing the MSE between the predicted and the reconstructed chroma samples in the reference region. FIG. 25 is a schematic diagram showing the reference region (with its padding) used for deriving the filter coefficients. FIG. 25 The reference region consists of the 6 rows of chroma samples above and to the left of the PU. The reference region is extended by one PU width to the right and one PU height downwards at the PU boundaries. The region is adjusted to include only available samples. The extension of the region shown in blue is required to support the "edge samples" of the plus-shaped spatial filter and is padded when in the unavailable region. The MSE minimization is performed by calculating the auto-correlation matrix for the luma inputs and the cross-correlation vector between the luma inputs and the chroma outputs. The auto-correlation matrix is LDL-decomposed and the final filter coefficients are calculated using back-substitution. The procedure roughly follows the calculation of the ALF filter coefficients in ECM, however, LDL-decomposition is chosen instead of Cholesky decomposition to avoid the use of square root operations. The proposed method only uses integer arithmetic. 2.19.3. Bitstream signaling The use of the mode is signaled with a PU level flag that is CABAC coded. A new CABAC context is included to support this. When it comes to signaling, CCCM is considered as a sub-mode of CCLM. That is, the CCCM flag is only signaled when the intra prediction mode is either LM_CHROMA IDX (to enable single mode CCCM) or MM_LM_CHROMA IDX (to enable multi-model CCCM). 2.20. Gradient Linear Model (GLM) Compared to CCLM, GLM utilizes the gradient of luma samples to derive the linear model, instead of down-sampled luma values. Specifically, when GLM is applied, the input of the CCLM process (i.e., down-sampled luma samples L) is replaced by the gradient of luma samples G. Other parts of CCLM (e.g., parameter derivation, prediction sample linear transformation) remain unchanged. C = a · G + b For signaling, when CCLM mode is enabled for the current CU, two flags are separately signaled for Cb and Cr components to indicate whether GLM is enabled for each component; if GLM is enabled for one component, one syntax element is further signaled to select one gradient filter out of 4 gradient filters for gradient calculation. As shown in FIG. 26 , four gradient filters are enabled for GLM. GLM with luma In ECM-6.0, GLM utilizes the gradient of luma samples to predict chroma samples, as follows: pred C (i,j) = a · G(i,j) + b where pred C (i,j) denotes the predicted value of chroma samples, G(i,j) denotes the gradient of corresponding reconstructed luma samples, and linear model parameters a and b are derived by neighboring reconstructed samples based on the same linear minimum mean square error (LMMSE) method as CCLM. A new GLM mode is proposed, in which chroma samples are predicted based on the gradient G(i,j) of luma samples and the reconstructed value rec L (i,j) of down-sampled luma samples with different parameters: pred C (i,j) = a0 · G(i,j) + a1 · rec L (i,j) + a2 · midValue where the model parameters a0, a1, and a2 are derived from six rows and six columns of neighboring samples based on the same LDL decomposition method as the CCCM mode in ECM-6.0. 2.21. Gradient and location based convolutional cross-component model for intra prediction (GL-CCCM) The proposed GL-CCCM method uses gradient and location information to replace the 4 spatial neighboring samples in the CCCM filter. The GL-CCCM filter for prediction is: predChromaVal = c0C + c1G + c2G + c3Y + c4X + c5P + c6B. y x where G y and G x are the vertical and horizontal gradients, respectively, and are calculated as: G y = (2N + NW + NE) - (2S + SW + SE), G x = (2W + NW + SW) - (2E + NE + SE). In addition, the Y and X parameters are the vertical and horizontal positions of the center luma sample, and they are calculated relative to the top-left coordinate of the block. The rest of the parameters are the same as the CCCM tool. The reference region for parameter calculation is the same as the CCCM method. FIG. 27 is a schematic diagram showing the spatial samples for GL-CCCM. Bitstream signaling The usage of the mode is signaled with a PU level flag that is CABAC coded. A new CABAC context is included to support this. When it comes to signaling, GL-CCCM is considered as a sub-mode of CCCM. That is, the GL-CCCM flag is only signaled when the original CCCM flag is true. Encoder operation The encoder performs two new RD checks in the chroma prediction mode loop, one for the single model GL-CCCM mode and one for the multi-model GL-CCCM mode. 2.22. CCCM using non-downsampled luma samples 2.22.1. Block level In this contribution, a CCCM using non-downsampled luma samples is proposed, where the chroma samples are directly predicted from the original reconstructed luma samples, i.e., no downsampling is performed. FIG. 28 is a schematic diagram showing the non-downsampled luma samples. AsFIG. 28 As shown, the proposed CCCM filter consists of a 6-tap spatial term, two non-linear terms and a bias term. The 6-tap spatial term corresponds to 6 neighboring luma samples (i.e., L0, L1, …, L5) of the chroma sample (i.e., C) to be predicted. where a i is a coefficient associated with L i and b is a bias. As in the existing CCCM design, chroma samples above and to the left of the current CU not exceeding 6 lines / columns are applied to derive the filter coefficients. The filter coefficients are derived based on the same LDL decomposition method used in CCCM. In this contribution, the proposed method is signaled as an additional CCCM model in addition to the existing CCCM model. For signaling, a single flag is signaled and used for both chroma components when CCCM is selected to indicate whether the default CCCM model is applied or the proposed CCCM model is applied. 2.22.2. High level control For content with sharp details, such as SCC content, downsampling of the luma component can not be optimal for CCCM model derivation. In this contribution, it is proposed to disable luma downsampling and derive and apply the model directly on the non-downsampled luma samples. If downsampling is not applied, the CCCM model shape is diamond 5x5. An SPS flag is signaled to indicate whether luma downsampling is applied for CCCM. 2.23. Spatial GPM (SGPM) In spatial GPM, a candidate list including partition split and two intra prediction modes is constructed. MPMs not exceeding 11 intra prediction modes are used to form a combination, the length of the candidate list is set to equal to 16. The selected candidate index is signaled. FIG. 29 Spatial GPM candidates are shown. The list is reordered using the template shown. FIG. 29 The GPM blending process is not used in the template and the SAD between the prediction of the template and the reconstruction is used for ordering. The SGPM mode is applied to blocks whose width and height satisfy the same restrictions as in inter GPM. FIG. 30 GPM template is shown. Consider the following items: • Spatial GPM partition mode: 26 predefined modes. Adaptive derivation algorithm based on the ratio of horizontal gradient to vertical gradient. • Intra prediction mode selection: IPM list with and without TIMD: The IPM list is derived for each part using the intra-inter GPM list derivation for each partition mode. The IPM list size is 3. In the list, the TIMD derived mode is replaced by 2 derived modes with horizontal and vertical directions (using top or left template), or the TIMD derived mode is excluded. MPM list: A unified MPM list (max 11 elements) is used for all partition modes. • Template size (left and above): 1 or 4. • Extended block size: The spatial GPM is extended to be further applied to 4x8, 8x4, 4x16 and 16x4 blocks, which can be described as 4 <= width <= 64, 4 <= height <= 64, width < height * 8, height < width * 8, width * height > = 32. • Adaptive mixing: The adaptive mixing is tested for the spatial GPM, where the mixing depth τ is derived as follows: ■ If min(width, height) == 4, then 1 / 2 τ is selected. ■ Else if min(width, height) == 8, then τ is selected. ■ Else if min(width, height) == 16, then 2 τ is selected. ■ Else if min(width, height) == 32, then 4 τ is selected. ■ Else, 8 τ is selected. FIG. 31 The GPM mixing is shown. 2.24. Signaling of cross-component prediction modes in ECM FIG. 32 The binarization of the cross-component prediction modes in ECM is shown. FIG. 32 The "CCLM" in can be replaced by "CCCM". In ECM-7, the cross-component modes include CCLM, CCLM-L, CCLM-T, MM-CCLM, MM-CCLM-L, MM-CCLM-T and CCCM, CCCM-L, CCCM-T, MM-CCCM, MM-CCCM-L, MM-CCCM-T. One flag is signaled to determine whether it is a CCCM mode or a CCLM mode. A truncated unary code is applied to indicate the CCLM mode or the CCCM mode as shown in FIG. 32 . CCLM or CCCM: 0. MM-CCLM or MM-CCCM: 10. CCLM-L or CCCM-L: 110. CCLM-T or CCCM-T: 1110. MM-CCLM-L or MM-CCCM-L: 11110. MM-CCLM-T or MM-CCCM-T: 11110. 2.25. Slope adjustment for CCLM CCLM uses a model with 2 parameters to map luma values to chroma values. The slope parameter "a" and the bias parameter "b" define the mapping as follows: chromaVal = a * lumaVal + b. It is proposed to signal an adjustment "u" to the slope parameter to update the model to the following form: chromaVal = a' * lumaVal + b' where a' = a + u, b' = b - u * y r . With this selection, the mapping function is tilted or rotated around the point with luma value y r . It is proposed to use the average of the reference luma samples used in the model creation as y r to provide a meaningful modification for the model. The following picture shows this process. 2.26. Fusion of chroma intra prediction modes In test 1.2b, it is proposed that the DM mode and the four default modes can be fused with the MMLM_LT mode as follows: pred = (w0 * pred0 + w1 * pred1 + (1 « (shift - 1))) » shift where pred0 is the prediction value obtained by applying a non-LM mode, pred1 is the prediction value obtained by applying the MMLM_LT mode, and pred is the final prediction value for the current chroma block. The two weights w0 and w1 are determined by the intra prediction modes of the neighboring chroma blocks, and shift is set to be equal to 2. Specifically, when both the above neighboring block and the left neighboring block are coded with LM modes, {w0, w1} = {1, 3}; when both the above neighboring block and the left neighboring block are coded with non-LM modes, {w0, w1} = {3, 1}; otherwise, {w0, w1} = {2, 2}. For the syntax design, if a non-LM mode is selected, one flag is signaled to indicate whether the fusion is applied or not. And the proposed fusion is only applied to I slices. 2.27. History-based cross-component prediction (H-CCP) 1. It is proposed that the model(s) of cross-component prediction (CCP) in a block, such as CCLM or CCCM, can be stored into a history table (HT). a. The HT is a list with ordered entries. i. Each entry has an index. For example, the index of the first entry is 0, and the indices of the subsequent entries are 1, 2, 3,.... b. The model parameters of CCLM and its variants can include a, b, and shift that control the precision of the computation. c. The model parameters of CCLM and its variants can include linear parts (such as c0~c4) and a non-linear part (such as c5). d. The model can include models for different color components, such as Cb and Cr. i. For example, the models for Cb and Cr can be coupled in an entry. e. In one example, different CCPs, such as CCLM and CCCM, can share the same HT. i. In one example, the segment in an entry of the HT can reflect the type of CCP model stored in the entry. f. In one example, different CCPs, such as CCLM and CCCM, can have different HTs. i. In one example, one CCLM_HT can store the models of CCLM and its variants, such as CCLM-L or CCLM-T. ii. In one example, one CCCM_HT can store the models of CCCM and its variants, such as CCCM-T or CCCM-T. g. In one example, a CCP with a single model, such as CCLM or CCCM, and a CCP with multiple models, such as MM-CCLM or MM-CCCM, can have different HTs. h. In one example, a CCP with a single model, such as CCLM or CCCM, and a CCP with multiple models, such as MM-CCLM or MM-CCCM, can share the same HT. i. In one example, the segment in an entry of the HT can reflect the number of models stored in the entry. ii. In one example, the segment in an entry of the HT can reflect at least one threshold used to classify samples into different model groups. i. In one example, a first HT is used to store the models of CCLM and its variants. i. In one example, CCLM variants can include CCLM-L, CCLM-T, MM-CCLM, MM-CCLM-L, MM-CCLM-T, GLM, and CCLM with slope adjustment. 1) The segment in the entry of the HT can reflect the number of models stored in the entry. 2) The segment in the entry of the HT can reflect at least one threshold used to classify samples into different model groups. 3) The segment in the entry of the HT can reflect whether GLM is applied. 4) The segment in the entry of the HT can reflect the down-sampling filter of GLM. j. In one example, the second HT is used to store models of CCCM and its variants. i. In one example, CCCM variants can include CCCM-L, CCCM-T, MM-CCCM, MM-CCCM-L, MM-CCCM-T. 1) The segment in the entry of the HT can reflect the number of models stored in the entry. 2) The segment in the entry of the HT can reflect at least one threshold used to classify samples into different model groups. 2. It is proposed that a block can be coded with a history-based CCP (H-CCP) mode in which at least one CCP model used by the current block is obtained or derived from a HT. a. In one example, at least one syntax element (SE) can be signaled to indicate whether H-CCP is applied. i. In one example, the SE can be conditionally signaled. For example, the SE is signaled only when a certain mode (such as CCCM or CCLM) is used. 1) For example, the SE is signaled only when the current mode is CCCM or CCLM. b. In one example, at least one syntax element (SE) can be signaled to indicate which entry in the HT is obtained to derive the model(s) for cross-component prediction. i. The SE can reflect an index in the HT. 1) In one example, the SE can be set equal to f(k), where k is the index and f is a function. 2) In one example, the SE can be set equal to f(k, M), where k is the index, M is the number of valid entries in the HT, and f is a function. a) In another example, M is the size of the HT. 3) In one example, the SE can be set equal to k, where k is the index. 4) In one example, SE can be set equal to M-1-k, where k is the index and M is the number of valid entries in the HT. a) In another example, M is the size of the HT. ii. SE can reflect the index of the list, and the list can be constructed based on the HT. 1) In one example, the list L is constructed by reversing the HT. For example, L[i] = HT[M-1-i], where M is the number of valid entries in the HT. a) In another example, M is the size of the HT. b) In one example, L can have a fixed size. c) In one example, if L is not full, empty entries are filled with default entries. iii. In one example, SE can be signaled conditionally. For example, SE is signaled only if H-CCP is applicable. iv. SE can be signaled only if more than one entry in the HT can be selected. v. The maximum value of SE (denoted as V) is determined by the number of entries to be selected. 1) For example, V = K, or V = K-1, or V = K+1, or V = K-2, or V = K+2. c. In one example, at least one syntax element (SE) can be signaled to indicate which HT is used. i. In one example, SE can be signaled conditionally. For example, SE is signaled only if H-CCP is applicable. ii. SE can be signaled only if more than one HT can be selected. d. In one example, which HT is used can be derived at the encoder / decoder. i. In one example, if the current mode is CCLM, the first HT storing the model of CCLM and its variants is used. ii. In one example, if the current mode is CCCM, the second HT storing the model of CCCM and its variants is used. e. In one example, the current block can be predicted with a CCP model obtained from a determined entry of the determined HT. f. In one example, the current block can be predicted with CCCM or CCLM based on whether the first HT or the second HT is applied. g. In one example, the current block can be predicted with a multi-model. i. Whether a single model or multiple models is applied can be derived / acquired from the determined entries of the determined HT. ii. At least one threshold value for classifying samples into different model groups can be acquired / derived from the determined entries of the determined HT. maintenance of HT 3. The maximum size of the HT can be predetermined, such as 5 or 6. a. Alternatively, the maximum size of the HT can be signaled as SE at block level / sequence level / picture group level / picture level / slice level / tile group level, such as in the coding structure of CTU / CU / TU / PU / CTB / CB / TB / PB or sequence header / picture header / SPS / VPS / DPS / DCI / PPS / APS / slice header / tile group header. b. Alternatively, the maximum size of the HT can be derived using the following encoding / decoding information: i. the mode of the current block; ii. the mode of the neighboring block; iii. the mode of the luma block in the collocated region of the current block; iv. the mode of the luma block in the collocated region of the neighboring block; v. the QP; vi. the slice / picture type; vii. the picture width / height; viii. the block width / height; ix. the reconstructed samples. 4. The HT can be flushed at the beginning of encoding / decoding a sequence / picture / slice / tile / subpicture / CTU row / CTU. a. For example, the HT can be flushed by emptying the table. b. For example, the HT can be flushed by completing the table with default entries. 5. The HT can be updated after encoding / decoding a block, such as a CU. a. For example, when applying dual tree coding, the CU must be a chroma CU. b. For example, the CU must be a CU with CCP mode. c. For example, which HT to be updated can depend on the coding mode of the CU. i. For example, if the CU is coded with a CCLM mode (such as CCLM, CCLM-L, CCLM-T, MM-CCLM, MM-CCLM-L, MM-CCLM-T, GLM, and CCLM with slope adjustment), the model(s) and related information (such as the threshold(s) used to classify samples into different model groups) are stored in the first HT. ii. For example, if the CU is coded with a CCCM mode (such as CCCM, CCCM-L, CCCM-T, MM-CCCM, MM-CCCM-L, MM-CCCM-T), the model(s) and related information (such as the threshold(s) used to classify samples into different model groups) are stored in the first HT. d. For example, a set of information related to the CCP model(s) used by the current block can be put into the HT. i. The set can include one or more CCP models. ii. The set can include the number of models. iii. The set can include the threshold(s) used to classify samples into different model groups. iv. The set can include a slope adjustment. e. In one example, if the current block is coded with CCLM with slope adjustment, the CCP model can be adjusted before being used to update the HT. 6. How a new set of information related to the CCP model(s) is put into the HT can depend on whether the HT is full or not. i. For example, if the HT is not full, the new set can be put to the first vacant entry of the HT. ii. For example, the first vacant entry is the vacant entry with the smallest index. iii. After being put into the HT, the new set can be put as the last occupied entry in the HT. 1) The last occupied entry can be the occupied entry with the largest index. 2) The last occupied entry can be the occupied entry with the smallest index. b. For example, if the HT is full, an existing entry in the HT can be removed. i. In one example, the HT can be managed in a first-in-first-out manner. ii. The existing entry with the smallest index can be removed. 1) The updated HT' can be set as: HT'[i] = HT[i+1] for 0 <= i <= N-2, and HT'[N-1] = the new group, where N is the size of HT. iii. The existing entry with the largest index can be removed. 1) The updated HT' can be set as: HT'[i] = HT[i-1] for 1 <= i <= N-1, and HT'[0] = the new group, where N is the size of HT. 7. In one example, the new group can be compared with at least one existing entry in the HT to determine whether to put the new group in the HT and / or how to update the HT. 8. In one example, if the new group is identical or similar to one of the existing entries in the HT, the new group is not put in the HT. Assume the special entry in the HT is identical or similar to the new group. a. For example, in this case, the special entry can be put to the first of the HT, and the entries originally before the special entry are pushed one position backward. i. For example, assume the entries are HT[i] (where i = 0, 1,...), and the special entry is HT[k], then the updated HT' will be as follows: HT'[0] = HT[k]; HT'[i] = HT[i-1] for 1 <= i <= k; HT'[i] = HT[i] for i > k. b. For example, in this case, the special entry can be put to the end of the HT, and the entries originally before the special entry are pushed one position forward. i. For example, assume the entries are HT[i] (where i = 0, 1,...), and the special entry is HT[k], then the updated HT' will be as follows: HT'[N-1] = HT[k]; HT'[i] = HT[i+1] for k <= i <= N-2; HT'[i] = HT[i] for i < k. 9. In one example, whether to put the new group in the HT and / or how to update the HT can depend on the coding information of the CU with the new group. 10. In one example, if the new group is of a CU that is coded with H-CCP mode, the new group is not put in the HT. Assume the special entry in the HT is used by a CU that is coded with H-CCP. a. For example, in this case, the special entry can be put to the first of the HT, and the entries originally before the special entry are pushed one position backward. i. For example, assuming the entries are HT[i] (where i = 0, 1,...), and the special entry is HT[k], the updated HT' will look like this: HT'[0] = HT[k]; HT'[i] = HT[i-1] (for 1 <= i <= k); HT'[i] = HT[i] (for i > k). b. For example, in this case, the special entry can be put at the end of the HT, and the entries that were originally before the special entry are pushed forward one position. i. For example, assuming the entries are HT[i] (where i = 0, 1,...), and the special entry is HT[k], the updated HT' will look like this: HT'[N-1] = HT[k]; HT'[i] = HT[i+1] (for k <= i <= N-2); HT'[i] = HT[i] (for i < k). 11. It is proposed that an entry of the HT can include a model for more than one chroma component, such as Cb and Cr. a. If the entry is selected, the models for components Cb and Cr are applied to the two components, respectively. 12. It is proposed that an entry of the HT can include a model for only one component, such as Cb or Cr. a. If the entry is selected, the model for a particular component, such as Cb or Cr, is applied to the particular component. b. In one example, different HTs can be constructed for different components. List Mode 13. It is proposed that at least one list with CCP models can be constructed. a. In one example, a chroma block can be predicted by "list mode" using the CCP models in a list. b. In one example, a list L can be populated with CCP models of one type, such as CCCM. c. In one example, a list can be populated with CCP models of multiple types, such as both CCCM and CCLM. i. In one example, the type of CCP model will be stored in the list with the CCP model. d. In one example, at least one syntax element (SE) can be signaled to indicate whether the CCP models in a list are used. i. In one example, the SE can be conditionally signaled. For example, the SE is signaled only when a particular mode, such as CCCM or CCLM, is used. 1) For example, the SE is signaled only when the current mode is CCCM or CCLM. 2) For example, SE is signaled only if "list mode" applies. e. In one example, at least one syntax element (SE) can be signaled to indicate which entry in the list is used to derive the model(s) for cross-component prediction. i. SE can reflect an index in the list. 1) In one example, SE can be set equal to f(k), where k is the index and f is a function. 2) In one example, SE can be set equal to f(k, M), where k is the index, M is the number of valid entries in the list, and f is a function. a) In another example, M is the size of the list. 3) In one example, SE can be set equal to k, where k is the index. 4) In one example, SE can be set equal to M-1-k, where k is the index and M is the number of valid entries in the list. a) In another example, M is the size of the list. f. In one example, L can have a fixed size. g. In one example, multiple lists can be constructed. i. For example, at least one syntax element (SE) can be signaled to indicate which list is used. ii. In one example, SE can be conditionally signaled. For example, SE is signaled only if "list mode" applies. iii. SE can be signaled only if more than one list can be selected. h. In one example, which list is used can be derived at the encoder / decoder. i. In one example, if the current mode is CCLM, a first list of models storing CCLM and its variants is used. ii. In one example, if the current mode is CCCM, a second list of models storing CCCM and its variants is used. 14. It is proposed that an entry of a list can include a model for more than one chroma component, such as Cb and Cr. a. If the entry is selected, the model for components Cb and Cr is applied to the two components, respectively. 15. It is proposed that an entry of a list can include a model for only one component, such as Cb or Cr. a. If the entry is selected, the model for a particular component, such as Cb or Cr, is applied to the particular component. 16. Multiple candidates can be put into the list, including: a. CCP model of adjacent neighboring block. b. CCP model of non-adjacent neighboring block. c. CCP model of collocated block in reference picture. d. CCP model of reference block in reference picture. e. CCP model in history table. f. CCP model derived from non-adjacent sample. g. Default CCP model. 17. In one example, the list can be constructed by checking possible candidates in order. a. For example, the order can be adjacent neighboring block, non-adjacent neighboring block, model in history table, model derived from non-adjacent sample. b. For example, the list construction is completed if the number of candidates in the list reaches the maximum allowed size of the list, such as 5 or 6. c. For example, the list construction is completed if the number of candidates in the list reaches f(d), where d is the index of the selected candidate and f is a function. For example, f(d) = d + 1. d. For example, a default model can be put into the list if all possible candidates have been checked and the construction is not completed. 18. In one example, if a potential candidate is put into the list, it can be compared with at least one existing candidate in the list. a. For example, if the potential candidate is the same or similar to an existing candidate, the potential candidate is not put into the list. b. In one example, if a potential entry of CCP information is put into a history-based table, it can be compared with at least one existing entry in the list. i. For example, if the potential entry is the same or similar to an existing entry, the potential entry is not put into the list.c. In one example, two CCP candidates or entries are determined to be not the same if: i. CCP types are different. ii. Numbers of models are different. iii. Thresholds are different if the CCP has multiple models. iv. At least one model is different. v. Luma sample offset is different. (Applicable only when the type is CCCM or GL-CCCM or GLM or CCCM using non-downsampled luma samples). vi. Sample position displacement is different. (Applicable only when the type is GL-CCCM). 19. For example, the CCP information of an entry in a history-based table or the candidate CCP information in a CCP candidate list may include: a. Type of CCP method, such as CCLM, or CCCM, or GLM, or GLM with luma, or GL-CCCM, or CCCM using non-downsampled luma samples. i. In one example, GLM methods using different downsampling filters can be considered as different types. ii. In one example, GLM methods with luminance using different downsampling filters can be considered as different types. iii. In one example, the types may be CCCM, CCLM, 4 types of GLM using different downsampling filters, 4 types of GLM with luma using different downsampling filters, GL-CCCM, and CCCM using non-downsampled luma samples. iv. “Not using CCP codec” (denoted as NonCCP) can also be considered as a type. b. Position (x, y). c. Number of models. i. For example, the number of models can be 1 or 2. ii. In one example, the number of models can be considered as part of the CCP type. For example, CCLM and MM-CCLM can be considered as two types. d. At least one threshold for classifying samples for different models. i. The threshold is only used when the number of models is at least 2. e. At least one luma sample value offset. i. When luma sample value offsets are used to derive chroma prediction values, the luma sample value offsets may be added to or subtracted from the luma samples (which may be downsampled). ii. Luma sample value offset can be used only for certain types, such as CCCM, GLM with luma, GL-CCCM, and CCCM using non-downsampled luma samples. f. At least one chroma sample value is offset. i. Chroma sample value offsets can be added to or subtracted from the chroma prediction values derived from the CCP model to generate the final prediction. g. At least one model for at least one chroma component. i. For example, it may include different models for the Cb component and the Cr component. ii. For example, the number of models for each component may be included as part of the information. iii. The model can be represented by a CCLM or a CCCM or a GLM or a GLM with luma or a GL-CCCM or a model form of CCCM using non-downsampled luma samples. h. At least one sample position displacement represented as (dX, dY). i. When the chroma sample position displacement is used to derive the chroma prediction value, the chroma sample position displacement can be added to or subtracted from the sample position (x, y). ii. The chroma sample position displacement can be used only for certain types, such as GL-CCCM. 20. For example, the CCP coding information of a chroma block after being encoded / decoded can be stored in a history-based table or in a CCP candidate list. a. In one example, the CCP coding information can be stored only when the chroma block is coded with a CCP mode. i. In one example, the CCP coding information can be stored if the chroma block is coded with at least one CCP mode, such as fusion with chroma intra prediction mode. 1) The type stored can be set to the CCP type used in the fusion of chroma intra prediction mode. b. In one example, the CCP coding information can be stored for any chroma block. i. If the chroma block is not coded with a CCP mode, the type is stored as “NonCCP”. c. If the chroma block is coded with a CCP mode, the type of information can be stored depending on the coding mode. i. If the mode is CCCM, or CCCM-T, or CCCM-L, or MM-CCCM, or MM-CCCM-T, or MM-CCCM-L, the type is set to “CCCM”. ii. If the mode is CCLM, or CCLM-T, or CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, the type is set to “CCLM”. iii. If the mode is CCLM with slope adjustment, or CCLM-T, or CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, the type is set to “CCLM”. iv. If the mode is GLM with filter X, the type is set to “GLM with filter X”. v. If the mode is GLM with luma using filter X, the type is set to "GLM with luma using filter X". vi. If the mode is GL-CCCM, the type is set to "GL-CCCM". vii. If the mode is using non-downsampled CCCM, the type is set to "using non-downsampled CCCM". viii. If the mode is fusion of chroma intra prediction modes, the type is set to "CCLM". d. The number of models can be stored as the number of models for the chroma block. i. For example, if the mode is MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, or any other multi-model CCP mode such as GLM, or GL-CCCM, or CCCM with multi-model using non-downsampled luma samples, the number of models is set to 2. e. Information such as threshold, luma / chroma sample value offset, sample position displacement can be stored as the information used by the chroma block. f. The CCP model of one component can be stored as the model used by the chroma block. i. The model can be derived by any CCP method such as CCLM, or CCLM-T, or CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, or CCCM, or CCCM-T, or CCCM-L, or MM-CCCM, or MM-CCCM-T, or MM-CCCM-L, or GLM using different downsample filters, or GLM with luma using different downsample filters, or GL-CCCM or CCCM using non-downsampled luma samples. ii. The stored model can be the model after final application such as after modification by slope adjustment. 21. In one example, a history table of CCP information after encoding / decoding region such as CU / CTU / CTU row can be stored, referred to as the stored table. a. The history table of CCP information maintained for the current block, referred to as the online table, can be used together with the stored history table of CCP information. b. In one example, entries in the stored table and the online table can be examined in order to generate new candidates. i. In one example, entries in the online table can be examined before all entries in the stored table. ii. In one example, the entry in the storage table can be checked before all entries in the online table. iii. For example, the kth entry in the storage table can be checked after the kth entry in the online table. iv. For example, the kth entry in the online table can be checked after the kth entry in the storage table. v. For example, the kth entry in the online table can be checked after the mth entry in the storage table (m = 0…S, where S is an integer). vi. For example, the kth entry in the storage table can be checked after the mth entry in the online table (m = 0…S, where S is an integer). vii. For example, the kth entry in the online table can be checked after the mth entry in the storage table (m = S…maxT, where S is an integer and maxT is the last entry). viii. For example, the kth entry in the storage table can be checked after the mth entry in the online table (m = S…maxT, where S is an integer and maxT is the last entry). c. In one example, the storage table(s) to be used can depend on the dimension and / or location of the current block. i. For example, the table stored in the CTU above the current CTU can be used. ii. For example, the table stored in the CTU above-left of the current CTU can be used. iii. For example, the table stored in the CTU above-right of the current CTU can be used. d. In one example, whether to use a storage table and / or how to use a storage table can depend on the dimension and / or location of the current block. i. In one example, whether to use a storage table and / or how to use a storage table can depend on whether the current CU is located at the top boundary of the CTU and whether the neighboring CTU above is available. 1) For example, the storage table can be used only when the current CU is located at the top boundary of the CTU and the neighboring CTU above is available. 2) For example, at least one entry in the storage table can be put to a more front position if the current CU is located at the top boundary of the CTU and the neighboring CTU above is available. e. In one example, entries in two storage tables can be checked in order to generate new candidates. i. For example, the first (or second) storage table stored in the CTU above the current CTU can be used. ii. For example, the first (or second) stored table stored in the CTU above and to the left of the current CTU can be used. iii. For example, the first (or second) stored table stored in the CTU above and to the right of the current CTU can be used. 2.28. Non-adjacent cross-component prediction (NA-CCP) 1. It is proposed that the model(s) of cross-component prediction (such as CCLM or CCCM) in a block can be derived based on a set of samples that are not adjacent to the current block, referred to as non-adjacent cross-component prediction (NA-CCP). a. In one example, a set of samples is not adjacent to the current block only when none of the samples in the set are adjacently neighboring (such as adjacently above or adjacently to the left of) the current block. b. In one example, a set of samples is reconstructed before encoding / decoding the current block. c. The samples can include chroma samples and / or their corresponding luma samples, which can be generated by downsampling if the color format is 4:2:0 or 4:2:2. 2. In one example, at least one syntax element (SE) can be signaled to indicate whether non-adjacent cross-component prediction is applied. a. In one example, the SE can be conditionally signaled. For example, the SE is signaled only when a certain mode (such as CCCM or CCLM) is used. 3. In one example, more than one set of samples that are not adjacent to the current block can be used to derive the model(s) of cross-component prediction. a. In one example, the samples in more than one set can be jointly used to derive the model(s) of cross-component prediction. b. In one example, one of the multiple sets of candidates can be selected to derive the model(s) of cross-component prediction. 4. In one example, at least one syntax element (SE) can be signaled to indicate which set of non-adjacent samples is used to derive the model(s) of cross-component prediction. a. In one example, the SE can be conditionally signaled. For example, the SE is signaled only when NA-CCP is applicable. b. The SE can be signaled only when more than one set of non-adjacent samples can be selected. c. The maximum value of the SE (denoted as V) is determined by the number of sets of non-adjacent samples to be selected (denoted as K). i. For example, V = K, or V = K - 1, or V = K + 1, or V = K - 2, or V = K + 2. 5. Whether / how to apply NA-CCP can be the same for more than one color component (such as Cb and Cr). a. Alternatively, whether / how to apply NA-CCP can be different for different components (such as Cb and Cr). 6. Whether NA-CCP is applicable can depend on the dimension / location of the current block. 7. In one example, a set of non-adjacent samples can include samples in a region. a. In one example, the region can be a coding block (e.g., a CU). b. In one example, the region can be represented by a location relative to the region. c. In one example, the region can be an MxN rectangle (e.g., M=N=8). d. In one example, a rectangular region can be represented by a location (such as the top-left location (x, y) of the region) and dimension MxN relative to the region. e. In one example, regions for different sets of non-adjacent samples can share the same shape and size. f. In one example, regions for different sets of non-adjacent samples can have different shapes or sizes. g. Samples in the region must be reconstructed. i. Alternatively, if samples in the region are not reconstructed, they should be padded. 8. In one example, luma samples corresponding to a set of non-adjacent chroma samples can be prepared or generated to be used for training the cross-component model. a. In one example, if the color format is 4:2:0 or 4:2:2, downsampling can be applied to generate the corresponding luma samples. b. In one example, the generated luma samples can correspond to a larger region than the region of non-adjacent chroma samples. i. In one example, assuming the region of non-adjacent chroma samples is an MxN rectangle, the generated luma samples can correspond to an (M+T+B)x(N+L+R) chroma rectangle, as shown in FIG. 33 . FIG. 33 An example of luma samples to be prepared is shown. 1) In one example, T=B=L=R=1. c. In one example, if a luma sample to be generated is not available (e.g., it is outside the picture boundary, or it is not reconstructed, or it is in a different CTU that has not been reconstructed, etc.), the luma sample can be handled specially. i. In one example, it can be padded, such as repeatedly padded with nearby available generated luma values. ii. In one example, it can not be generated and marked as "unavailable". 1) The dimension of the luma region can be set as the available region. 9. In one example, whether a region including non-adjacent samples is a valid set of samples to derive the model(s) can be determined by the availability of at least one sample of the region. a. For example, the region is rectangular. b. For example, the region is determined to be valid only if both the top-left reconstructed sample and the bottom-right reconstructed sample of the region are available. c. For example, the region is determined to be valid only if both the top-right reconstructed sample and the bottom-left reconstructed sample of the region are available. 10. In one example, a list of regions can be constructed to record multiple sets of non-adjacent samples. a. In one example, the index of the list can be signaled as SE to indicate which set of non-adjacent samples is used to derive the model(s) for cross-component prediction. i. For example, the SE can be binarized as a truncated unary code. ii. In one example, the SE can be conditionally signaled. For example, the SE is signaled only if the NA-CCP is applied. iii. The SE can be signaled only if more than one set of non-adjacent samples can be selected. iv. The maximum value of the SE (denoted as V) is determined by the number of sets of non-adjacent samples to be selected (denoted as K). 1) For example, V = K, or V = K-1, or V = K+1, or V = K-2, or V = K+2. b. In one example, the list can be constructed by sequentially checking multiple potential candidate regions. i. The list is initialized as empty. ii. The list construction is completed if the number of candidate regions in the list is equal to the maximum size of the list, such as 6. iii. The list construction is completed if all potential candidate regions have been checked. iv. A potential candidate can be put into the list if the region is determined to be valid. v. De-duplication can be applied to construct the list. 1) If a potential candidate "duplicates" an existing candidate in the list, the potential candidate can not be put into the list. a) A candidate region "repeats" another region if its samples are the same (or similar) to those of another region. b) A candidate region "repeats" another region if a same or similar model can be derived from the samples in both regions. 11. In one example, the position and / or dimension of a region including non-adjacent samples can depend on the coding information, such as the width / height of the current block. a. The region can be a potential candidate region for a list. b. The distance between the region and the current block can depend on the width / height of the current block. 12. In one example, a potential candidate region can be an MxN rectangle (e.g., M=N=8) non-adjacent to the left / left-bottom / left-top / top / right-top of the current block. FIG. 34 An example of potential candidate regions (shared blocks) is shown. 13. In one example, a potential candidate region is an MxN (e.g., M=N=8) rectangle, and its top-left position (x0, y0) can be described as (assuming the top-left position of the current block with dimension WxH is (0, 0)): a. (x0, y0) = (s*f(W, H), t*g(W, H)), where f and g are functions. s and t are scaling factors, such as 0.5, 1, or 2. b. (x0, y0) = (s*f(W), t*g(H)), where f and g are functions. s and t are scaling factors, such as 0.5, 1, or 2. 14. In one example, potential candidate regions are MxN (e.g., M=N=8) rectangles, and their ordered top-left positions are as follows (assuming the top-left position of the current block with dimension WxH is (0, 0)): (-xStep, 0), (0, -yStep), (xStep, -yStep), (-xStep, yStep), (-xStep, -yStep), (-2*xStep, 0), (0, -2*yStep), (-2*xStep, 2*yStep), (2*xStep, -2*yStep), (-2*xStep, yStep), (xStep, -2*yStep), (-2*xStep, -yStep), (-xStep, -2 * yStep), (-2 * xStep, -2 * yStep), (-xStep / 2, 0), (0, -yStep / 2), (xStep / 2, -yStep / 2), (-xStep / 2, yStep / 2), (-xStep / 2, -yStep / 2), where xStep and yStep are integers. a. The order of the checks can be changed. b. In one example, xStep = Max(W, K1), yStep = Max(H, K2), where K1 and K2 are integers, e.g., K1 = K2 = 16. 15. In one example, whether and / or how to apply NA-CCP can be signaled from the encoder to the decoder. a. Alternatively, whether and / or how to apply NA-CCP can be inferred at the encoder and the decoder based on encoded / decoded information without signaling. b. “How to apply NA-CCP” can include: i. Which CCP (such as CCLM or CCCM) model is derived by NA-CCP; ii. Shape / size / position of (potential) candidate regions; iii. Size of the region list; iv. Number of (potential) candidate regions; v. Color component(s) to which NA-CCP is applied. c. “Encoded / decoded information” can include: i. Mode of the current block; ii. Mode of neighboring blocks; iii. Mode of luma blocks in collocated regions of the current block; iv. Mode of luma blocks in collocated regions of neighboring blocks; v. QP; vi. Slice / picture type; vii. Picture width / height; viii. Block width / height; ix. Reconstructed samples. 16. In one example, CCP coding information of spatial or temporal neighboring blocks can be used by the current block. a. For example, the spatial neighboring blocks can or can not be adjacent to the current block. b. For example, the CCP coding information can include: i. The type of the CCP method, such as CCLM, or CCCM, or GLM, or GLM with luma, or GL-CCCM, or CCCM with non-downsampled luma samples. 1) In one example, GLM methods using different downsample filters can be considered as different types. 2) In one example, GLM methods with luma using different downsample filters can be considered as different types. 3) In one example, the types can be CCCM, CCLM, 4 types of GLM using different downsample filters, 4 types of GLM with luma using different downsample filters, GL-CCCM, and CCCM with non-downsampled luma samples. 4) “No utilization of CCP coding” (denoted as NonCCP) can also be considered as a type. ii. The position (x, y). iii. The number of models. 1) For example, the number of models can be 1 or 2. 2) In one example, the number of models can be considered as part of the CCP type. For example, CCLM and MM-CCLM can be considered as two types. iv. At least one threshold to classify samples for different models. 1) The threshold is used only when the number of models is at least 2. v. At least one luma sample value offset. 1) When the luma sample value offset is used to derive chroma prediction values, the luma sample value offset can be added to or subtracted from the luma samples (which can be downsampled). 2) The luma sample value offset can be used only for certain types, such as CCCM, GLM with luma, GL-CCCM, and CCCM with non-downsampled luma samples. vi. At least one chroma sample value offset. 1) The chroma sample value offset can be added to or subtracted from the chroma prediction values derived by the CCP model to generate the final prediction. vii. At least one model for at least one chroma component. 1) For example, it can include different models for Cb and Cr components. 2) For example, the number of models for each component can be included as part of the information. 3) The model can be represented by a CCLM or a CCCM or a GLM or a GLM with luma or a GL-CCCM or a CCCM using non-downsampled luma samples. viii. At least one sample position displacement represented as (dX, dY). 1) When a chroma sample position displacement is used to derive a chroma prediction value, the chroma sample position displacement can be added to or subtracted from the sample position (x, y). 2) The chroma sample position displacement can be used only for certain types, such as GL-CCCM. c. For example, the CCP coding information can be stored after the chroma block is encoded / decoded. i. In one example, the CCP coding information can be stored only when the chroma block is coded with a CCP mode. 1) In one example, the CCP coding information can be stored if the chroma block is coded with at least one CCP mode, such as fusion with chroma intra prediction mode. a) The type stored can be the CCP type used in the fusion of chroma intra prediction mode. ii. In one example, the CCP coding information can be stored for any chroma block. 1) If the chroma block is not coded with a CCP mode, the type is stored as "NonCCP". iii. If the chroma block is coded with a CCP mode, the type of information can be stored depending on the coding mode. 1) If the mode is CCCM, or CCCM-T, or CCCM-L, or MM-CCCM, or MM-CCCM-T, or MM-CCCM-L, the type is set to "CCCM". 2) If the mode is CCLM, or CCLM-T, or CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, the type is set to "CCLM". 3) If the mode is CCLM with slope adjustment, or CCLM-T, or CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, the type is set to "CCLM". 4) If the mode is GLM using filter X, the type is set to "GLM using filter X". 5) If the mode is GLM with luma using filter X, the type is set to "GLM with luma using filter X". 6) If the mode is GL-CCCM, the type is set to "GL-CCCM". 7) If the mode is using non-downsampled luma samples, the type is set to "using non-downsampled luma samples". 8) If the mode is fusion of chroma intra prediction modes, the type is set to "CCLM". iv. The number of models can be stored as the number of models for the chroma block. 1) For example, if the mode is MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, or any other multi-model CCP mode (such as GLM, or GL-CCCM, or CCCM with multi-model using non-downsampled luma samples), the number of models is set to 2. v. Information such as threshold, luma / chroma sample value offset, sample position displacement can be stored as the information used by the chroma block. vi. The CCP model for one component can be stored as the model used by the chroma block. 1) The model can be derived by any CCP method (such as CCLM, or CCLM-T, or CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, or CCCM, or CCCM-T, or CCCM-L, or MM-CCCM, or MM-CCCM-T, or MM-CCCM-L, or GLM using different downsample filters, or GLM with luma using different downsample filters, or GL-CCCM or CCCM using non-downsampled luma samples). 2) The stored model can be the model after final application, such as after modification by slope adjustment. d. For example, the CCP coding information can be stored in MxN granularity. i. For example, M=N=2. ii. For example, the CCP coding information for a particular chroma block covered by, or covering, or overlapping with, an MxN region can be stored to the MxN region. 1) For example, the CCP coding information for a first encoding / decoding block with CCP information covered by, or covering, or overlapping with, an MxN region can be stored. 2) For example, CCP coding information of the last coded / decoded block with CCP information covered by, or covering, or overlapping with, an MxN region can be stored. 3) For example, CCP coding information of a coded / decoded block with CCP information of a specific position covered by, or covering, or overlapping with, an MxN region can be stored. a) The specific position can be a top-left / bottom-right / top-right / bottom-left / center position of the MxN region. 17. In one example, a CCP candidate list can be constructed for a chroma block. a. In one example, a first syntax element (SE) can be signaled to indicate whether a CCP candidate in the list is applied to the current chroma block. (It can be denoted as "block is coded with CCP candidate list mode"). i. For example, the SE can be a flag. ii. For example, the SE can be coded with a context. b. For example, the first SE can be signaled in a conditional manner. i. For example, the first SE is signaled only when a CCP is applied. ii. For example, the first SE can be signaled only when a CCP is applied, and a specific mode is applied. 1) The specific mode can be CCLM. 2) The specific mode can be CCCM. c. In one example, a second syntax element (SE) can be signaled to indicate which CCP candidate is applied. i. For example, the SE can be an index. ii. For example, the SE can be binarized to a truncated unary code. 1) For example, the maximum value of the SE can be S-1, where S is the maximum size of the candidate list. iii. For example, the first bin of the SE can be coded with a context. d. For example, the second SE can be signaled in a conditional manner. i. For example, the second SE can be signaled only when the first SE indicates that a CCP candidate in the list is applied. e. In one example, whether the CCP candidate list mode is applicable can be signaled in VPS / DPS / SPS / PPS / picture header / slice header / etc. f.In one example, the maximum size / length of the CCP candidate list can be signaled in VPS / DPS / SPS / PPS / picture header / slice header / etc. 18.In one example, the CCP candidate list can include at least one CCP candidate stored in a spatial neighboring block, which can or can not be adjacent to the current block (assuming the top-left position of the current block is (Xt, Yt), the width and height of the current block are W and H, respectively). a.In one example, a set of positions is examined in order to find stored CCP information. i.For example, if the type of stored CCP information associated with a position is NonCCP, the position is skipped. 1)Alternatively, if the type of stored CCP information associated with a position is NonCCP, the position is put into a backup position list. ii.For example, if the type of stored CCP information associated with a position is not NonCCP, the stored CCP information is tried to be appended to the list. b.In one example, a set of positions (Xi, Yi) to be examined in order can be derived from positions near the current block to positions far away from the current block. i.For example, the positions can be examined in a cycle-by-cycle manner. For one cycle, several positions are examined, and the next cycle is performed. ii.In one example, the positions to be examined in a cycle are: (Xt-NDHor-1, Yt+H+NDVer-1), (Xt+W+NDHor-1, Yt-NDVer-1), (Xt+(W>>1), Yt-NDVer-1), (Xt-NDHor-1, Yt+(H>>1)), (Xt-NDHor-1, Yt-NDVer-1) where NDHor and NDVer are different for different cycles. iii.In one example, the positions to be examined for cycle k are derived as: NDHor = (k == 0? W / 2 : W*k); NDVer = (k == 0? H / 2 : H*k). iv.In one example, the positions to be examined for different cycles can be different. c.In one example, the set of positions (Xi, Yi) to be examined can be the same as the set of positions examined when building the Merge list. d.In one example, the set of positions (Xi, Yi) to be examined can be the same set of positions examined when constructing the subblock-based Merge list. 19.In one example, when attempting to place a stored CCP information as a candidate (referred to as a potential candidate) in the CCP candidate list, it can be compared to at least one candidate already in the CCP candidate list. a.In one example, all candidates in the list can be compared to the potential candidate. b.In one example, if a candidate already in the CCP candidate list is the same or similar to the potential candidate, the potential candidate cannot be placed in the CCP candidate list. c.In one example, two CCP candidates are determined to be not the same if: i.The CCP types are different. ii.The number of models are different. iii.If the CCP has multiple models, the thresholds are different. iv.At least one model is different. v.The luma sample offset is different (only applicable when the type is CCCM or GL-CCCM or GLM or CCCM using non-downsampled luma samples). vi.The sample position displacement is different (only applicable when the type is GL-CCCM). 20.In one example, when a CCP candidate in the list is used to generate a prediction for the current block, the CCP will follow the CCP information is performed. a.CCCM, CCLM, 4 types of GLM using different downsample filters, 4 types of GLM with luma using different downsample filters, GL-CCCM and CCCM using non-downsampled luma samples can be applied to the current block based on the CCP type of the candidate. b.Based on the number of models and thresholds of the candidate, one model or multiple models with at least one threshold can be used. c.The luma sample value offset of the candidate can be added to or subtracted from the luma samples (which can be downsampled) to be put into the CCP model. i.This process is only applicable when the type is CCCM, or GL-CCCM, or GLM, or CCCM using non-downsampled luma samples. d.The sample position displacement(s) can be added to or subtracted from the position coordinates to be put into the CCP model. i.This process is only applicable when the type is GL-CCCM. e. How the down-sampled luma samples are obtained can be based on the CCP type. i. The down-sampled luma samples can be obtained following the down-sampling method required by the CCP mode corresponding to the type. 21. In an example, the prediction value generated by the CCP candidate can be modified before being used to obtain the reconstructed sample value. a. In one example, an offset D can be added to or subtracted from the prediction value. b. In one example, the offset can be derived based on the luma / chroma samples of a template, which is calculated using reconstructed samples neighboring the current block (referred to as “template”). FIG. 35A to FIG. 35C Possible templates are shown respectively. i. In one example, if the reconstructed samples to the left of the current block are available, the template can consist of the reconstructed samples to the left of the current block. ii. In one example, if the reconstructed samples above the current block are available, the template can consist of the reconstructed samples above the current block. iii. In one example, if the reconstructed samples above / left of the current block are available, the template can consist of the reconstructed samples above or left of the current block. iv. The corresponding luma samples of the template can be down-sampled in the same way as the luma samples inside the current block. c. In one example, if the CCP type requires N models (such as two models), N offsets (denoted as {D 0 ,…,D N-1}) can be derived. i. The offset D i may be added to or subtracted from the prediction value generated by model i. d. In one example, the CCP method indicated by the type of the CCP candidate can be applied to the template. i. For example, for the k-th sample of the template, S k = R k - P k is calculated, where R k and P k denote the reconstructed sample value and the prediction value with CCP of the k-th sample respectively. 1) For example, D is calculated as the average of {S k}. 2) For example, assuming the number of S k is M, D is calculated as D = sign(sum) x ((|sum| + off) » W), where and ii. For example, for the kth sample of model i using template, S i k = R i k - P i k is calculated, where R i k and P i k respectively represent the reconstructed sample value of the kth sample using model i and the predicted value using CCP. 1) For example, D i is calculated as the average of {S i k}. 2) For example, assuming the number of S i k is M, D is calculated as Di = sign(sum) x ((|sum| + off) » W), where and iii. In one example, no division operation is used to calculate D or D i . 1) For example, a lookup table can be used to calculate D or D i . e. For example, only certain types of CCPs can apply the modification, such as CCLM and CCCM with multiple models. i. For example, the types of CCLM, CCLM with multiple models, CCCM with multiple models, and GLM can apply the modification. 22. In one example, candidates with type "non-adjacent" can be put into the candidate list. a. The information includes the position (x, y). b. If such a candidate is used to predict the current block, the CCP model(s) can be derived with the samples referenced by (x, y), as required by items 1-15. c. In one example, the positions stored in the backup position list disclosed in item 18 can be checked in order to put valid positions into the candidate list. 23. In one example, if the number of candidates in the list is M and M = D + 1, the construction of the candidate list can be terminated, where D is the index indicating the selected candidate. 24. In one example, if all possible potential candidates are checked and the size of the candidate list is smaller than S (where S is the maximum number of candidates), a default candidate can be put into the list to complete the list. 25. In one example, the CCP candidate list can include at least one candidate obtained from a history-based table. a. The history table can be an online table. b. The history table can be a storage table. c. To construct the CCP candidate list, potential candidates can be examined in an order. i. For example, the order can be (1) CCP information stored in spatially neighboring / non-neighboring blocks; (2) CCP candidates with type “non-neighboring”; (3) history-based candidates from an online table; (4) history-based candidates from a storage table; (5) default candidates. ii. For example, the order can be (1) CCP information stored in spatially neighboring blocks; (2) CCP information stored in spatially non-neighboring blocks; (3) CCP candidates with type “non-neighboring”; (4) history-based candidates from an online table; (5) history-based candidates from a storage table; (6) default candidates. iii. For example, the order can be (1) CCP information stored in spatially neighboring blocks; (2) CCP information stored in spatially non-neighboring blocks; (3) history-based candidates from an online table; (4) history-based candidates from a storage table; (5) CCP candidates with type “non-neighboring”; (6) default candidates. iv. For example, the order can be (1) CCP information stored in spatially neighboring blocks; (2) history-based candidates from an online table; (3) CCP information stored in spatially non-neighboring blocks; (4) CCP candidates with type “non-neighboring”; (5) history-based candidates from a storage table; (6) default candidates. v. Any type of candidate in the example order can be removed from it. vi. Any other order of these kinds of potential candidates. 26. In one example, if a chroma block is coded by using at least one CCP candidate, the CCP information of the CCP candidate can be stored. a. The storage method can follow the way disclosed in item 16. 27. In one example, if a chroma block is coded by using at least one CCP candidate, the CCP information of the CCP candidate can be put into a history-based table. a. The process of putting CCP information into a history-based table can follow the process described in section 2.27. 3. Problem 1. Candidates in the CCP candidate list can not be in the best order. It is useful to put better candidates in a more earlier position with shorter index bits. 4. Detailed solutions The following detailed embodiments should be considered illustrative of the general concepts. These embodiments should not be construed as limiting in any way. Furthermore, these embodiments can be combined in any way. In the following discussion, CCCM can refer to the original CCCM mode, or it can refer to a variant of CCCM, such as CCCM-L, CCCM-T, MM-CCCM, MM-CCCM-L, MM-CCCM-T. In the following discussion, CCLM can refer to the original CCLM mode, or it can refer to a variant of CCLM, such as CCLM-L, CCLM-T, MM-CCLM, MM-CCLM-L, MM-CCLM-T, etc. In the following discussion, Cross Component Prediction (CCP) can refer to any cross component prediction, such as CCLM or CCCM or GLM or CCLM with sliding offset. 1. The CCP candidates in the CCP candidate list can be reordered. a. The CCP candidate list can include different kinds of candidates, such as candidates with CCP information stored in neighboring / non-neighboring neighboring blocks and / or candidates with CCP information stored in history-based tables and / or CCP information derived from non-neighboring samples. b. In one example, whether and / or how to reorder can be signaled from the encoder to the decoder, such as at block level / sequence level / picture group level / picture level / slice level / tile group level, such as in the coding structure of CTU / CU / TU / PU / CTB / CB / TB / PB or sequence header / picture header / SPS / VPS / DPS / DCI / PPS / APS / slice header / tile group header. c. In one example, the CCP candidate list can be reordered at the encoder and the decoder based on the same rule. d. In one example, assuming the CCP candidate list before reordering is denoted as L, and the CCP candidate list after reordering is denoted as L', and the index of a CCP candidate that is signaled to the decoder or derived by the decoder is denoted as k, then the CCP candidate L'[k] can be used to decode the current block. e. In one example, whether and / or how to reorder the candidates in the CCP candidate list can depend on the position of the candidate in the list. i. For example, only the first M candidates in the candidate list L can be reordered, where M is no larger than the size of L. f.In one example, whether and / or how candidates in the CCP candidate list are reordered can depend on the type of the CCP candidate and / or the CCP information. i.In one example, a candidate with a certain characteristic can be placed forward in the reordering. ii.In one example, a candidate with a certain characteristic can be placed backward in the reordering. iii.In one example, a candidate with a certain characteristic can not be involved in the reordering. iv.The certain characteristic can be: 1) it is a default CCP candidate that fills the candidate list. 2) it has CCP information stored in at least one adjacent neighboring block. 3) it has CCP information stored in at least one non-adjacent neighboring block. 4) it has CCP information stored in a block at a certain location. 5) it has CCP information stored in a history-based table. 6) it has CCP information stored in an online-updated history-based table. 7) it has CCP information stored in a stored history-based table. 8) it has CCP information stored in a history-based table at a certain entry. 9) it has CCP information and / or CCP information derived from non-adjacent samples. 10) it has CCP information and / or CCP information derived from non-adjacent samples at a certain location. 11) it is associated with a certain CCP method, such as CCLM, or CCLM-T, or CCLM-L, or MM-CCLM, or MM-CCLM-T, or MM-CCLM-L, or CCCM, or CCCM-T, or CCCM-L, or MM-CCCM, or MM-CCCM-T, or MM-CCCM-L, or GLM using different downsampling filters, or GLM with luma using different downsampling filters, or GL-CCCM, or CCCM using non-downsampled luma samples. g.In one example, the reordering process can be performed in a conditional manner. i.For example, the reordering process can be skipped if the number of candidates in the CCP candidate list is less than a threshold. ii.For example, the reordering process can be skipped if W >= Tw, and / or W <= Tw, and / or H >= Th, and / or H <= Th, and / or W*H >= Ts, and / or W*H <= Ts. iii. For example, the reordering process can be skipped based on coding information such as mode / QP / neighbor information / color component / color format. h. In one example, the reordering process can be performed once for at least two components such as Cb and Cr. i. In one example, the reordering process can be performed separately for different components such as Cb and Cr. 2. The CCP candidates in the CCP candidate list can be reordered based on cost comparison. a. In one example, for each CCP candidate involving the reordering process, a cost can be calculated associated with the candidate. b. In one example, the involved CCP candidates can be placed in ascending order based on the cost associated with the candidates. c. In one example, the involved CCP candidates can be placed in descending order based on the cost associated with the candidates. d. In one example, the cost can be a template cost, which is calculated using reconstructed samples neighboring the current block, referred to as a “template”. FIG. 36A to FIG. 36C Possible templates are shown respectively. 1) In one example, if reconstructed samples to the left of the current block are available, the template can consist of reconstructed samples to the left of the current block. 2) In one example, if reconstructed samples above the current block are available, the template can consist of reconstructed samples above the current block. 3) In one example, if reconstructed samples above / left of the current block are available, the template can consist of reconstructed samples above or left of the current block. e. The cost of a CCP candidate can be calculated in a process. The process can include at least one of the following two steps: i. Step 1: Cross-component prediction is derived on the samples of the template. 1) The cross-component prediction is applied to the template in the same / similar way as the CCP method associated with the CCP candidate is applied on the current block. a) In one example, the luma samples corresponding to the template region can be obtained by the downsampling method required by the CCP candidate. 2) In one example, the cross-component prediction model of the CCP candidate that can be used to generate the prediction of the current block can be used to derive the predicted samples of the template. a) In one example, when deriving the predicted samples of the template with the CCP model, the predicted samples can be modified. i. For example, an offset can be added to the predicted samples. ii. For example, the offset can be derived as disclosed in item 21 of section 2.28. 3) In one example, the threshold used to separate at least two modes in the current block (such as in MM-CCCM and MM-CCLM modes) can be used to separate the modes in the template. ii. Step 2: Distortion between the predicted sample of the template and the reconstructed sample is computed as cost. 1) The distortion can be SAD, SSD, mean removed SAD, SATD, etc. f. The cost can be derived separately for different components (such as Cb component and Cr component). i. The cost on one component (such as Cb) can be used to reorder the candidates. ii. The total cost on multiple components (such as Cb and Cr) can be used to reorder the candidates. 3. When building the CCP candidate list, the potential CCP candidates can be reordered. a. For example, the potential CCP candidates can have a characteristic. i. The characteristic is a default CCP candidate that fills the candidate list. ii. The characteristic has CCP information stored in at least one adjacent neighboring block. iii. The characteristic has CCP information stored in at least one non-adjacent neighboring block. iv. The characteristic has CCP information stored in a block at a specific location. v. The characteristic has CCP information stored in a history-based table. vi. The characteristic has CCP information stored in an online-updated history-based table. vii. The characteristic has CCP information stored in a stored history-based table. viii. The characteristic has CCP information and / or CCP information derived from non-adjacent samples. b. In one example, all or some of the potential candidates can be examined and reordered. The top N potential candidates can be put into the candidate list. i. In one example, the top N potential candidates can maintain order when they are in the candidate list. ii. In one example, the reordering can be performed based on comparison of cost as disclosed in item 1, 2. 4. In one example, when building the CCP candidate list, the adjacent neighboring blocks can be examined before the non-adjacent neighboring blocks. 5. In one example, whether a neighboring neighboring block and / or a non- neighboring neighboring block can be examined to build a CCP candidate list can depend on the location of the neighboring neighboring block and / or the non-neighboring neighboring block. a. In one example, if the neighboring neighboring block and / or the non- neighboring neighboring block is not in the current CTU row, it can not be allowed to be examined to build a CCP candidate. b. In one example, if the neighboring neighboring block and / or the non- neighboring neighboring block is not in the current CTU, it can not be allowed to be examined to build a CCP candidate. c. In one example, if |y0-Y0| > Ts, the neighboring neighboring block and / or the non-neighboring neighboring block can not be allowed to be examined to build a CCP candidate, where (x0, y0) is the top-left position of the neighboring block and (X0, Y0) is the top-left position of the current CTU. d. In one example, if |x0-X0| > Ts, the neighboring neighboring block and / or the non-neighboring neighboring block can not be allowed to be examined to build a CCP candidate, where (x0, y0) is the top-left position of the neighboring block and (X0, Y0) is the top-left position of the current CTU. e. In one example, if |y0-Y0| > Ts, the neighboring neighboring block and / or the non-neighboring neighboring block can not be allowed to be examined to build a CCP candidate, where (x0, y0) is the top-left position of the neighboring block and (X0, Y0) is the top-left position of the current block. f. In one example, if |x0-X0| > Ts, the neighboring neighboring block and / or the non-neighboring neighboring block can not be allowed to be examined to build a CCP candidate, where (x0, y0) is the top-left position of the neighboring block and (X0, Y0) is the top-left position of the current block. g. In the above items, “CTU” can be replaced by any other area unit such as “VPDU”. 6. In one example, whether a neighboring neighboring block and / or a non- neighboring neighboring block can be examined to build a CCP candidate list can depend on whether a dual tree structure is applied. 7. In one example, whether a luma sample can be used to derive a CCP model can depend on whether a dual tree structure is applied. a. For example, when dual tree is applied, a luma sample is available as long as it is in the current CTU. b. For example, when dual tree is not applied, a luma sample is available only if the block containing it has been decoded. 8. In one example, a first syntax element (SE) can be signaled to indicate whether a CCP candidate in the list is applied to the current chroma block. (It can be denoted as "block coded with CCP candidate list mode"), and a second SE can be signaled in a conditional manner depending on the first SE. b. For example, if the first SE indicates that the block is coded with CCP candidate list mode, the second SE can not be signaled. i. The second SE can indicate whether a type of CCLM mode is applied. ii. The second SE can indicate whether a type of CCCM mode is applied. c. For example, if the first SE indicates that the block is coded with CCP candidate list mode, an index can be signaled to indicate a CCP candidate, and other information can not be signaled to indicate any other CCP mode. 9. In one example, whether a CCP candidate list mode is applicable to a block can depend on a width W and / or a height H of the block. a. In one example, if the CCP candidate list mode is not applicable to the block, the SE to indicate whether a CCP candidate in the list is applied to the current chroma block is not signaled. b. In one example, the CCP candidate list mode is not applicable if WxH <= T, where T is an integer, such as 8, or 16, or 32. c. In one example, the CCP candidate list mode is not applicable if WxH >= T, where T is an integer, such as 1024, or 2048, or 4096. d. In one example, the CCP candidate list mode is not applicable if min{W, H} <= T, where T is an integer, such as 4, or 8, or 16, or 32, or 64. e. In one example, the CCP candidate list mode is not applicable if min{W, H} >= T, where T is an integer, such as 4, or 8, or 16, or 32, or 64. f. In one example, the CCP candidate list mode is not applicable if max{W, H} <= T, where T is an integer, such as 4, or 8, or 16, or 32, or 64. g. In one example, the CCP candidate list mode is not applicable if max{W, H} >= T, where T is an integer, such as 4, or 8, or 16, or 32, or 64. 10. In one example, to fill the CCP candidate list, the checking order can be a. neighboring neighboring blocks. b. non-neighboring neighboring blocks. c. History-based neighboring blocks. d.Default candidate. 11. In one example, FIG. 37 As shown, specific adjacent neighboring blocks may be checked in sequence to populate the CCP candidate list. FIG. 37 Adjacent neighboring blocks are shown. a. In one example, the specific adjacent neighboring blocks may be A1, A3, A4, A6, A7, and the order may be: i.A3, A6, A4, A7, A1; ii.A3, A6, A7, A4, A1; iii.A6, A3, A7, A4, A1; iv.A6, A3, A4, A7, A1. b. In one example, the specific adjacent neighboring blocks may be A1, A2, A3, A4, A5, A6, A7, and the order may be: i.A3, A6, A4, A7, A1, A2, A5; ii.A3, A6, A7, A4, A1, A2, A5; iii.A6, A3, A7, A4, A1, A2, A5; iv.A6, A3, A4, A7, A1, A2, A5; v.A3, A6, A4, A7, A1, A5, A2; vi.A3, A6, A7, A4, A1, A5, A2; vii.A6, A3, A7, A4, A1, A5, A2; viii.A6, A3, A4, A7, A1, A5, A2; ix.A3, A6, A4, A7, A2, A5, A1; x.A3, A6, A7, A4, A2, A5, A1; xi.A6, A3, A7, A4, A2, A5, A1; xii.A6, A3, A4, A7, A2, A5, A1; xiii.A3, A6, A4, A7, A5, A2, A1. xiv.A3, A6, A7, A4, A5, A2, A1; xv.A6, A3, A7, A4, A5, A2, A1; xvi.A6, A3, A4, A7, A5, A2, A1. 12. In one example,FIG. 37 As shown, certain neighboring neighboring blocks can be examined in order to fill the CCP candidate list. 13. In one example, two CCP candidates are determined to be the same if: i. the CCP types are both CCLM or GLM. ii. the number of models is the same. iii. the parameters of the models in the first CCP candidate are different from the corresponding parameters of the corresponding models in the second CCP candidate. 1) The parameters can be the offset parameters of linear models. In other words, assuming the model is in the form of y = ax + b, where a and b are parameters, then b is the offset parameter. 14. In one example, when deriving the average value D as disclosed in item 21 of section 2.28, a process of division operation can be applied. a. For example, D is computed as the average of {S k}. Assuming the number of S k is M, and then sum and M can be the inputs of the process, and D can be the output. b. For example, the use of the process can depend on whether sum is < 0. i. For example, if sum < 0, then -sum can be input to the process, and the output can be -D, which will be converted to D by a NOT operation. c. For example, the process can include at least one predefined table. i. For example, the table can be divTable
[16] = {0, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 0}. d. For example, at least one log2 operation can be involved in the process. i. For example, the process can derive e. In one example, an index NormNum to a table entry in divTable can be derived. i. The derivation can depend on M. ii. The derivation can depend on x. iii. In one example, NormNum = (M « 4 » x) & 15. f. In one example, a value v can be computed with a selected entry divTable[NormNum] in divTable by setting certain bits to 1. i. For example, v = 8 | divTable[NormNum]. g. In one example, x can be modified based on NormNum. i. For example, if NormNum is not equal to 0, then x = x + 1. h. In one example, a shift S can be derived based on x. i. For example, S = 13 - x. i. In one example, a value retVal can be derived based on whether S is less than 0. i. In one example, if S < 0, then retValue = (sum x v + (1 « (-S - 1)) » (-S). ii. In one example, if S >= 0, then retValue = (sum x v) » S. j. In one example, D can be derived from retVal by a shift operation. i. For example, D = retVal » 16. k. In one example, the process or part of the process can also be used as a replacement for division operation in other coding tools. i. For example, when deriving a cross-component model, it can be used in CCLM or CCCM. ii. For example, it can be used in MM-CCLM or MM-CCCM to derive a threshold to classify samples. iii. For example, it can be used in affine mode to derive an affine model or a corner point motion vector (CPMV). 15. In one example, the prediction generated by the first CCP candidate in the list can be fused with a second prediction to obtain a prediction used in another step. a. In one example, the two predictions are fused by performing a weighted sum. i. For example, the weighting values can be position dependent. ii. For example, the weighting values can be indicated by signaling. iii. For example, the weighting values can be fixed values. b. In one example, the second prediction can be generated by a second CCP candidate. c. In one example, the second prediction can be a specific CCP prediction, such as CCLM or CCCM. d. In one example, the second prediction can be a specific angular prediction mode, such as DC mode. e. In one example, the second prediction can be a specific angular prediction mode dependent on the luma component, such as DM mode. f. In one example, the second prediction can be a specific angular prediction mode dependent on neighboring samples, such as DIMD or TIMD mode. g. In one example, the SE can be signaled to indicate whether such fusion is applied. h. In one example, the SE can be signaled to indicate the first prediction and / or the second prediction to be fused. i. In one example, the index of the CCP candidate list can indicate whether such fusion is applied. j. In one example, the index of the CCP candidate list can indicate the first prediction and / or the second prediction to be fused. SUMMARY 16. The syntax elements disclosed above can be binarized into flags, fixed length codes, EG(x) codes, unary codes, truncated unary codes, truncated binary codes, etc. It can be signed or unsigned. 17. The syntax elements disclosed above can be coded with at least one context model. Or it can be bypass coded. 18. The syntax elements disclosed above can be signaled in a conditional way. a. The SE is signaled only if the corresponding function is applicable. b. The SE is signaled only if the dimensions (width and / or height) of the block meet the condition. 19. The syntax elements disclosed above can be signaled at block level / sequence level / group of pictures level / picture level / slice level / tile group level, such as in the coding structure of CTU / CU / TU / PU / CTB / CB / TB / PB or sequence header / picture header / SPS / VPS / DPS / DCI / PPS / APS / slice header / tile group header. 20. Whether and / or how to apply the methods disclosed above can be signaled at block level / sequence level / group of pictures level / picture level / slice level / tile group level, such as in the coding structure of CTU / CU / TU / PU / CTB / CB / TB / PB or sequence header / picture header / SPS / VPS / DPS / DCI / PPS / APS / slice header / tile group header. 21. Whether and / or how to apply the methods disclosed above can depend on the coded information, such as block size, color format, single / tree partitioning, color component, slice / picture type. 22. The proposed methods disclosed in this document can be used in other coding tools that need chroma fusion.
[0098] Further details will be described below. FIG. 38A flowchart illustrating a method 3800 for video processing according to embodiments of the present disclosure is shown. The method 3800 is implemented for a conversion between a current video block of a video and a bitstream of the video.
[0099] At block 3810, a cross-component prediction (CCP) candidate list for the current video block is determined, the CCP candidate list including at least one CCP candidate.
[0100] At block 3820, at least one CCP candidate in the CCP candidate list is reordered.
[0101] At block 3830, the conversion is performed based on the reordered CCP candidate list. In some embodiments, the conversion can include encoding the current video block into the bitstream. Alternatively or additionally, the conversion can include decoding the current video block from the bitstream.
[0102] The method 3800 enables reordering of a CCP candidate list. In this way, coding efficiency and coding effectiveness can be improved.
[0103] In some embodiments, the CCP candidate list includes at least one of: a candidate with CCP information stored in a neighboring neighboring block, a candidate with CCP information stored in a non-neighboring neighboring block, a candidate with CCP information stored in a history-based table, or a candidate with CCP information derived from a non- neighboring sample.
[0104] In some embodiments, information about whether and / or how the CCP candidate list is reordered is indicated in the bitstream, and the information is in at least one of: a block level, a sequence level, a picture group level, a picture level, a slice level, or a tile group level.
[0105] In some embodiments, the information is included in at least one of the following coding structures: a coding tree unit (CTU), a coding unit (CU), a transform unit (TU), a prediction unit (PU), a coding tree block (CTB), a coding block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), a decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a tile group header.
[0106] In some embodiments, the rules for reordering of the CCP candidate list at an encoder are the same as the rules for reordering of the CCP candidate list at a decoder.
[0107] In some embodiments, the index of the target CCP candidate in the reordered CCP candidate list is indicated in the bitstream, and the target CCP candidate with the index is used for conversion.
[0108] In some embodiments, the information regarding whether and / or how to reorder the candidates in the CCP candidate list is based on the position of the candidates in the CCP candidate list.
[0109] In some embodiments, the first M candidates in the CCP candidate list are reordered, M being an integer greater than or equal to 0 and not greater than the size of the CCP candidate list.
[0110] In some embodiments, the information regarding whether to reorder the candidates in the CCP candidate list and / or how to reorder the candidates in the CCP candidate list is based on at least one of: the type of the candidate, or CCP information of the candidate.
[0111] In some embodiments, candidates with features in the CCP candidate list are placed earlier in the reordering.
[0112] In some embodiments, candidates with features in the CCP candidate list are placed later in the reordering.
[0113] In some embodiments, candidates with features are not involved in the re-ranking.
[0114] In some embodiments, the features include at least one of the following: the candidate is a default CCP candidate that populates a CCP candidate list, the candidate has CCP information stored in at least one adjacent neighboring block, the candidate has CCP information stored in at least one non-adjacent neighboring block, the candidate has CCP information stored in a block at a location, the candidate has CCP information stored in a history-based table, the candidate has CCP information stored in a history-based table that is updated online, the candidate has CCP information stored in a stored history-based table, the candidate has CCP information stored in a history-based table at an entry, the candidate has CCP information, the candidate has CCP information derived from non-adjacent samples, the candidate has CCP information derived from non-adjacent samples at a location, or the candidate is associated with a CCP mode.
[0115] In some embodiments, the CCP mode includes at least one of: a cross-component linear model (CCLM), a CCLM based on top neighboring samples of the current video block (CCLM-T), a CCLM based on left neighboring samples of the current video block (CCLM-L), a multi-model based CCLM (MM-CCLM), a multi-model based CCLM-T (MM-CCCM-T), a multi-model based CCLM-L (MM-CCCM-L), a convolutional cross-component model (CCCM), a CCCM based on top neighboring samples of the current video block (CCCM-T), a CCCM based on left neighboring samples of the current video block (CCCM-L), a multi-model based CCCM (MM-CCCM), a multi-model based CCCM-T (MM-CCCM-T), a multi-model based CCCM-L (MM-CCCM-L), a gradient linear model (GLM) using down-sampling filters, a GLM with down-sampled luma, a gradient and location based CCCM (GL-CCCM), or a CCCM using non-down-sampled luma samples.
[0116] In some embodiments, the reordering is performed in a conditional manner.
[0117] In some embodiments, the reordering is skipped if a number of candidates in the CCP candidate list is less than a threshold.
[0118] In some embodiments, the reordering is skipped based on at least one of the following conditions being satisfied: a first condition that a width of the current video block is greater than or equal to a threshold width, a second condition that the width of the current video block is less than or equal to the threshold width, a third condition that a height of the current video block is greater than or equal to a threshold height, a fourth condition that the height of the current video block is less than or equal to the threshold height, a fifth condition that a size of the current video block is greater than or equal to a threshold size, or a sixth condition that the size of the current video block is less than or equal to the threshold size.
[0119] In some embodiments, the reordering is skipped based on coding information including at least one of: a coding mode, a quantization parameter, neighboring information, a color component, or a color format.
[0120] In some embodiments, the reordering is performed once for at least two color components.
[0121] In some embodiments, the at least two color components include Cb and Cr.
[0122] In some embodiments, the reordering is performed separately for different color components including Cb and Cr.
[0123] In some embodiments, the reordering of the CCP candidate list is based on a cost comparison.
[0124] In some embodiments, the cost associated with a candidate in the CCP candidate list is determined for each candidate involved in the reordering.
[0125] In some embodiments, the involved candidates in the CCP candidate list are placed in ascending order based on the cost associated with the involved candidates.
[0126] In some embodiments, the involved candidates in the CCP candidate list are placed in descending order based on the cost associated with the involved candidates.
[0127] In some embodiments, the cost associated with a candidate in the CCP candidate list comprises a template cost, the template cost being determined based on reconstructed samples neighboring the current video block, the reconstructed samples corresponding to a template.
[0128] In some embodiments, the template is composed of reconstructed samples to the left of the current video block if the reconstructed samples to the left of the current video block are available.
[0129] In some embodiments, the template is composed of reconstructed samples above the current video block if the reconstructed samples above the current video block are available.
[0130] In some embodiments, the template is composed of reconstructed samples to the left or above the current video block if the reconstructed samples to the left or above the current video block are available.
[0131] In some embodiments, the cost of a candidate in the CCP candidate list is determined in a process, the process comprising at least one of: a first step for determining a CCP on a sample of a template of the current video block; or a second step for determining a distortion between a predicted sample of the template and a reconstructed sample as the cost.
[0132] In some embodiments, the CCP is applied to the template in the same manner as the CCP associated with the candidate is applied to the current video block.
[0133] In some embodiments, the luma samples of the region corresponding to the template are obtained by a downsampling manner required by the candidate.
[0134] In some embodiments, the CCP model of the candidate used to generate the prediction of the current video block is used to determine the predicted sample of the template.
[0135] In some embodiments, the predicted sample is modified when determining the predicted sample of the template with the CCP model.
[0136] In some embodiments, the offset of the template is added to the prediction samples.
[0137] In some embodiments, the offset of the template is determined by a manner used to determine the offset for the CCP prediction samples in the current video block.
[0138] In some embodiments, a threshold used to separate at least two models in the current video block is used to separate the models in the template.
[0139] In some embodiments, the current video block is in at least one of: a multi-model based convolution cross component model (MM-CCCM), or a multi-model based cross component linear model (MM-CCLM).
[0140] In some embodiments, the distortion includes at least one of: sum of absolute difference (SAD), sum of squared difference (SSD), mean removed SAD, or sum of absolute transformed difference (SATD).
[0141] In some embodiments, the cost is determined separately for different color components, the color components including a Cb component and a Cr component.
[0142] In some embodiments, the cost on a single color component is used to reorder the candidates in the CCP candidate list.
[0143] In some embodiments, the total cost on multiple color components, the multiple color components including a Cb component and a Cr component, is used to reorder the candidates in the CCP candidate list.
[0144] In some embodiments, when determining the CCP candidate list, the potential CCP candidates are reordered.
[0145] In some embodiments, the potential CCP candidates have a characteristic.
[0146] In some embodiments, the characteristic includes at least one of: the potential CCP candidate is a default CCP candidate that fills the CCP candidate list, the potential CCP candidate has CCP information stored in at least one adjacent neighboring block, the potential CCP candidate has CCP information stored in at least one non-adjacent neighboring block, the potential CCP candidate has CCP information stored in a block at a location, the potential CCP candidate has CCP information stored in a history-based table, the potential CCP candidate has CCP information stored in an online-updated history-based table, the potential CCP candidate has CCP information stored in a stored history-based table, the potential CCP candidate has CCP information stored in a history-based table at an entry, the potential CCP candidate has CCP information, or the potential CCP candidate has CCP information derived from non-adjacent samples.
[0147] In some embodiments, all or some of the potential CCP candidates are examined and reordered, and the top N potential CCP candidates are added to the CCP candidate list, N being an integer greater than or equal to 0.
[0148] In some embodiments, the top N potential CCP candidates remain in order when in the CCP candidate list.
[0149] In some embodiments, the reordering of the potential CCP candidates is based on a comparison of the cost of the potential CCP candidates.
[0150] In some embodiments, a syntax element in the bitstream is binarized as at least one of: a flag, a fixed length code, an exponential Golomb (x) (EG(x)) code, a unary code, a truncated unary code, or a truncated binary code.
[0151] In some embodiments, the syntax element is signed or unsigned.
[0152] In some embodiments, a syntax element in the bitstream is coded with at least one context model, or bypass coded.
[0153] In some embodiments, the syntax element is included in the bitstream based on a condition that is applicable based on a function associated with the syntax element.
[0154] In some embodiments, the syntax element is included in the bitstream if a dimension of a current video block satisfies a condition.
[0155] In some embodiments, the syntax element is at at least one of: a block level, a sequence level, a picture group level, a picture level, a slice level, or a tile group level.
[0156] In some embodiments, the syntax element is in at least one of the following coding structures: a coding tree unit (CTU), a coding unit (CU), a transform unit (TU), a prediction unit (PU), a coding tree block (CTB), a coding block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), a decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a tile group header.
[0157] In some embodiments, information about whether and / or how the method 3800 is applied is included in the bitstream.
[0158] In some embodiments, the information is indicated at one of: a sequence level, a picture group level, a picture level, a slice level, or a tile group level.
[0159] In some embodiments, the information is indicated in at least one of the following coding structures: a coding tree unit (CTU), a coding unit (CU), a transform unit (TU), a prediction unit (PU), a coding tree block (CTB), a coding block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), a decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a tile group header.
[0160] In some embodiments, the information is based on coded information, wherein the coded information comprises at least one of: a block size, a color format, a single tree partitioning or a dual tree partitioning, a color component, a slice type, or a picture type.
[0161] In some embodiments, the method 3800 is used in a coding tool that requires chroma fusion.
[0162] According to further embodiments of the disclosure, a non-transitory computer-readable recording medium is provided. The non-transitory computer-readable recording medium stores a bitstream of a video generated by a method performed by an apparatus for video processing. In the method, a cross-component prediction (CCP) candidate list for a current video block of the video is determined, the CCP candidate list including at least one CCP candidate. At least one CCP candidate in the CCP candidate list is reordered. The bitstream is generated based on the reordered CCP candidate list.
[0163] According to still further embodiments of the disclosure, a method for storing a bitstream of a video is provided. In the method, a cross-component prediction (CCP) candidate list for a current video block of the video is determined, the CCP candidate list including at least one CCP candidate. At least one CCP candidate in the CCP candidate list is reordered. The bitstream is generated based on the reordered CCP candidate list. The bitstream is stored in a non-transitory computer-readable recording medium.
[0164] Embodiments of the disclosure can be described according to the following clauses, which features can be combined in any reasonable manner.
[0165] Clause 1. A method for video processing, comprising: for a conversion between a current video block of a video and a bitstream of the video, determining a cross-component prediction (CCP) candidate list for the current video block, the CCP candidate list including at least one CCP candidate; reordering at least one CCP candidate in the CCP candidate list; and performing the conversion based on the reordered CCP candidate list.
[0166] Item 2. The method of item 1, wherein the CCP candidate list includes at least one of: a candidate with CCP information stored in a neighboring neighboring block, a candidate with CCP information stored in a non-neighboring neighboring block, a candidate with CCP information stored in a history-based table, or a candidate with CCP information derived from non-neighboring samples.
[0167] Item 3. The method of item 2 or 3, wherein information about whether and / or how the CCP candidate list is reordered is indicated in the bitstream, and the information is in at least one of: a block level, a sequence level, a group of pictures level, a picture level, a slice level, or a tile group level.
[0168] Item 4. The method of item 3, wherein the information is included in at least one of the following coding structures: a coding tree unit (CTU), a coding unit (CU), a transform unit (TU), a prediction unit (PU), a coding tree block (CTB), a coding block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), a decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a tile group header.
[0169] Item 5. The method of any of items 1 to 4, wherein the rules for reordering of the CCP candidate list at the encoder are the same as the rules for reordering of the CCP candidate list at the decoder.
[0170] Item 6. The method of any of items 1 to 5, wherein an index of a target CCP candidate in the reordered CCP candidate list is indicated in the bitstream, and the target CCP candidate with the index is used for the conversion.
[0171] Item 7. The method of any of items 1 to 6, wherein the information about whether and / or how the candidates in the CCP candidate list are reordered is based on a position of the candidate in the CCP candidate list.
[0172] Item 8. The method of item 7, wherein the first M candidates in the CCP candidate list are reordered, M being an integer greater than or equal to 0 and not greater than a size of the CCP candidate list.
[0173] Item 9. The method of any of items 1 to 8, wherein the information about whether and / or how the candidates in the CCP candidate list are reordered is based on at least one of: a type of the candidate, or CCP information of the candidate.
[0174] Clause 10. The method of clause 9, wherein a candidate in the CCP candidate list having a characteristic is placed forward in the reordering.
[0175] Clause 11. The method of clause 9, wherein a candidate in the CCP candidate list having a characteristic is placed backward in the reordering.
[0176] Clause 12. The method of clause 9, wherein a candidate having a characteristic is not involved in the reordering.
[0177] Clause 13. The method of any of clauses 10-12, wherein the characteristic comprises at least one of: the candidate is a default CCP candidate that fills the CCP candidate list, the candidate has CCP information stored in at least one adjacent neighboring block, the candidate has CCP information stored in at least one non-adjacent neighboring block, the candidate has CCP information stored in a block at a location, the candidate has CCP information stored in a history-based table, the candidate has CCP information stored in an online-updated history-based table, the candidate has CCP information stored in a stored history-based table, the candidate has CCP information stored in a history-based table at a clause, the candidate has CCP information, the candidate has CCP information derived from non-adjacent samples, the candidate has CCP information derived from non-adjacent samples at a location, or the candidate is associated with a CCP mode.
[0178] Clause 14. The method of clause 13, wherein the CCP mode comprises at least one of: a cross-component linear model (CCLM), a CCLM based on top neighboring samples of a current video block (CCLM-T), a CCLM based on left neighboring samples of a current video block (CCLM-L), a multi-model based CCLM (MM-CCLM), a multi-model based CCLM-T (MM-CCCM-T), a multi-model based CCLM-L (MM-CCCM-L), a convolutional cross-component model (CCCM), a CCCM based on top neighboring samples of a current video block (CCCM-T), a CCCM based on left neighboring samples of a current video block (CCCM-L), a multi-model based CCCM (MM-CCCM), a multi-model based CCCM-T (MM-CCCM-T), a multi-model based CCCM-L (MM-CCCM-L), a gradient linear model (GLM) using a down-sampling filter, a GLM with luma using a down-sampling filter, a CCCM based on gradient and location (GL-CCCM), or a CCCM using non-down-sampled luma samples.
[0179] Clause 15. The method of any of clauses 1-14, wherein the reordering is performed in a conditional manner.
[0180] Item 16. The method of item 15, wherein the reordering is skipped if a number of candidates in the CCP candidate list is less than a threshold.
[0181] Item 17. The method of item 15, wherein the reordering is skipped based on at least one of the following conditions being satisfied: a first condition that a width of the current video block is greater than or equal to a threshold width; a second condition that the width of the current video block is less than or equal to the threshold width; a third condition that a height of the current video block is greater than or equal to a threshold height; a fourth condition that the height of the current video block is less than or equal to the threshold height; a fifth condition that a size of the current video block is greater than or equal to a threshold size; or a sixth condition that the size of the current video block is less than or equal to the threshold size.
[0182] Item 18. The method of item 15, wherein the reordering is skipped based on coding information, the coding information comprising at least one of: a coding mode, a quantization parameter, neighboring information, a color component, or a color format.
[0183] Item 19. The method of any of items 1 to 18, wherein the reordering is performed once for at least two color components.
[0184] Item 20. The method of item 19, wherein the at least two color components comprise Cb and Cr.
[0185] Item 21. The method of any of items 1 to 18, wherein the reordering is performed separately for different color components, the different color components comprising Cb and Cr.
[0186] Item 22. The method of any of items 1 to 21, wherein the reordering of the CCP candidate list is based on a cost comparison.
[0187] Item 23. The method of item 22, wherein a cost associated with each candidate in the CCP candidate list that is involved in the reordering is determined.
[0188] Item 24. The method of item 22 or 23, wherein the candidates in the CCP candidate list that are involved are placed in ascending order based on the cost associated with the candidates that are involved.
[0189] Item 25. The method of item 22 or 23, wherein the candidates in the CCP candidate list that are involved are placed in descending order based on the cost associated with the candidates that are involved.
[0190] Item 26. The method of any of items 22 to 25, wherein the cost associated with a candidate in the CCP candidate list comprises a template cost, the template cost being determined based on reconstructed samples neighboring the current video block, the reconstructed samples corresponding to a template.
[0191] Item 27. The method of item 26, wherein if reconstructed samples to the left of the current video block are available, the template consists of the reconstructed samples to the left of the current video block.
[0192] Item 28. The method of item 26, wherein if reconstructed samples above the current video block are available, the template consists of the reconstructed samples above the current video block.
[0193] Item 29. The method of item 26, wherein if reconstructed samples to the left or above the current video block are available, the template consists of the reconstructed samples to the left or above the current video block.
[0194] Item 30. The method of any of items 22 to 29, wherein the cost of a candidate in the CCP candidate list is determined in a process, the process comprising at least one of: a first step for determining a CCP on a sample of a template of the current video block; or a second step for determining a distortion between a predicted sample of the template and a reconstructed sample as the cost.
[0195] Item 31. The method of item 30, wherein the CCP is applied to the template in the same manner as the CCP associated with the candidate is applied on the current video block.
[0196] Item 32. The method of item 31, wherein the luma samples corresponding to the region of the template are obtained by a manner of downsampling required by the candidate.
[0197] Item 33. The method of any of items 30 to 32, wherein the CCP model of the candidate used to generate the prediction of the current video block is used to determine the predicted sample of the template.
[0198] Item 34. The method of item 33, wherein the predicted sample is modified when determining the predicted sample of the template with the CCP model.
[0199] Item 35. The method of item 34, wherein an offset of the template is added to the predicted sample.
[0200] Item 36. The method of item 35, wherein the offset of the template is determined by a manner used to determine the offset of the predicted sample for the CCP in the current video block.
[0201] Item 37. The method of any of items 30 to 36, wherein a threshold used to separate at least two models in a current video block is used to separate models in a template.
[0202] Item 38. The method of item 37, wherein the current video block is in at least one of: a multi-model based convolution cross component model (MM-CCCM), or a multi-model based cross component linear model (MM-CCLM).
[0203] Item 39. The method of any of items 30 to 38, wherein the distortion comprises at least one of: sum of absolute differences (SAD), sum of squared differences (SSD), mean removed SAD, or sum of absolute transformed differences (SATD).
[0204] Item 40. The method of any of items 30 to 39, wherein the cost is determined separately for different color components, the color components comprising a Cb component and a Cr component.
[0205] Item 41. The method of item 40, wherein the cost on a single color component is used to reorder candidates in a CCP candidate list.
[0206] Item 42. The method of item 40, wherein a total cost on multiple color components, the multiple color components comprising a Cb component and a Cr component, is used to reorder candidates in a CCP candidate list.
[0207] Item 43. The method of any of items 1 to 42, wherein when determining a CCP candidate list, potential CCP candidates are reordered.
[0208] Item 44. The method of item 3, wherein the potential CCP candidate has a characteristic.
[0209] Item 45. The method of item 44, wherein the characteristic comprises at least one of: the potential CCP candidate is a default CCP candidate that fills a CCP candidate list, the potential CCP candidate has CCP information stored in at least one adjacent neighboring block, the potential CCP candidate has CCP information stored in at least one non-adjacent neighboring block, the potential CCP candidate has CCP information stored in a block at a location, the potential CCP candidate has CCP information stored in a history-based table, the potential CCP candidate has CCP information stored in an online-updated history-based table, the potential CCP candidate has CCP information stored in a stored history-based table, the potential CCP candidate has CCP information stored in a history-based table at an entry, the potential CCP candidate has CCP information, or the potential CCP candidate has CCP information derived from non-adjacent samples.
[0210] Item 46. The method of any of items 43 to 45, wherein all or some of the potential CCP candidates are examined and reordered, and the top N potential CCP candidates are added to the CCP candidate list, N being an integer greater than or equal to 0.
[0211] Item 47. The method of item 46, wherein the top N potential CCP candidates remain in order when in the CCP candidate list.
[0212] Item 48. The method of item 43, wherein the reordering of the potential CCP candidates is based on a comparison of costs of the potential CCP candidates.
[0213] Item 49. The method of any of items 1 to 48, wherein a syntax element in the bitstream is binarized into at least one of the following: a flag, a fixed length code, an exponential Golomb (x) (EG(x)) code, a unary code, a truncated unary code, or a truncated binary code.
[0214] Item 50. The method of item 49, wherein the syntax element is signed or unsigned.
[0215] Item 51. The method of any of items 1 to 50, wherein a syntax element in the bitstream is coded with at least one context model, or bypass coded.
[0216] Item 52. The method of any of items 49 to 51, wherein the syntax element is included in the bitstream based on a condition that a function associated with the syntax element is applicable.
[0217] Item 53. The method of any of items 49 to 51, wherein the syntax element is included in the bitstream if a dimension of a current video block satisfies a condition.
[0218] Item 54. The method of any of items 49 to 53, wherein the syntax element is at at least one of the following: a block level, a sequence level, a group of pictures level, a picture level, a slice level, or a tile group level.
[0219] Item 55. The method of any of items 49 to 54, wherein the syntax element is in at least one of the following coding structures: a coding tree unit (CTU), a coding unit (CU), a transform unit (TU), a prediction unit (PU), a coding tree block (CTB), a coding block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), a decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a tile group header.
[0220] Item 56. The method of any of items 1 to 55, wherein information about whether and / or how the method is applied is included in a bitstream.
[0221] Item 57. The method of item 56, wherein the information is indicated at one of the following: a sequence level, a picture group level, a picture level, a slice level, or a tile group level.
[0222] Item 58. The method of item 56 or 57, wherein the information is indicated in at least one of the following coding structures: a coding tree unit (CTU), a coding unit (CU), a transform unit (TU), a prediction unit (PU), a coding tree block (CTB), a coding block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), a decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a tile group header.
[0223] Item 59. The method of any of items 56 to 58, wherein the information is based on coded information, wherein the coded information comprises at least one of the following: a block size, a color format, a single tree partitioning or a dual tree partitioning, a color component, a slice type, or a picture type.
[0224] Item 60. The method of any of items 1 to 59, wherein the method is used in a coding tool that requires chroma fusion.
[0225] Item 61. The method of any of items 1 to 59, wherein the conversion comprises encoding a current video block into a bitstream.
[0226] Item 62. The method of any of items 1 to 59, wherein the conversion comprises decoding a current video block from a bitstream.
[0227] Item 63. An apparatus for video processing comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform the method according to any of items 1 to 62.
[0228] Item 64. A non-transitory computer-readable storage medium storing instructions that cause a processor to perform the method according to any of items 1 to 62.
[0229] Item 65. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method for video processing, wherein the method comprises: determining a cross-component prediction (CCP) candidate list for a current video block of the video, the CCP candidate list including at least one CCP candidate; reordering the at least one CCP candidate in the CCP candidate list; and generating the bitstream based on the reordered CCP candidate list.
[0230] Item 66. A method for storing a bitstream of a video, comprising: determining a cross-component prediction (CCP) candidate list for a current video block of the video, the CCP candidate list including at least one CCP candidate; reordering the at least one CCP candidate in the CCP candidate list; generating the bitstream based on the reordered CCP candidate list; and storing the bitstream in a non-transitory computer-readable recording medium. Example device
[0231] FIG. 39 A block diagram of a computing device 3900 in which various embodiments of the present disclosure can be implemented is shown. The computing device 3900 can be implemented as, or included in, the source device 110 (or video encoder 114 or 200) or the destination device 120 (or video decoder 124 or 300), or can be included in the source device 110 (or video encoder 114 or 200) or the destination device 120 (or video decoder 124 or 300).
[0232] It should be understood that FIG. 39 The computing device 3900 shown in FIG. 13 is for purposes of illustration and explanation only and is not intended to imply any limitation on the functionality and scope of embodiments of the present disclosure.
[0233] As FIG. 39 shown, the computing device 3900 includes a general-purpose computing device 3900. The computing device 3900 can include at least one or more processors or processing units 3910, a memory 3920, a storage unit 3930, one or more communication units 3940, one or more input devices 3950, and one or more output devices 3960.
[0234] In some embodiments, the computing device 3900 can be implemented as any user terminal or server terminal having computing capabilities. The server terminal can be a server provided by a service provider, a mainframe computing device, or the like. The user terminal can be, for example, any type of mobile terminal, fixed terminal, or portable terminal including a mobile phone, a station, a unit, a device, a multimedia computer, a multimedia tablet, an Internet node, a communicator, a desktop computer, a laptop computer, a notebook computer, a netbook computer, a tablet computer, a personal communication system (PCS) device, a personal navigation device, a personal digital assistant (PDA), an audio / video player, a digital camera / camcorder, a positioning device, a television receiver, a radio broadcast receiver, an electronic book device, a game device, or any combination thereof, including an attachment and a peripheral device of these devices, or any combination thereof. It is contemplated that the computing device 3900 can support any type of interface to the user (such as "wearable" circuitry, etc.).
[0235] The processing unit 3910 can be a physical or virtual processor and can implement various processes based on programs stored in the memory 3920. In a multi-processing system, multiple processing units can execute computer-executable instructions in parallel to improve the processing power of the computing device 3900. The processing unit 3910 can also be referred to as a central processing unit (CPU), a microprocessor, a controller, or a microcontroller.
[0236] The computing device 3900 typically includes a variety of computer storage media. Such media can be any media that is accessible by the computing device 3900 and can include, without limitation, both volatile and non-volatile media, or removable and non-removable media. The memory 3920 can be volatile memory (e.g., registers, cache, random access memory (RAM)), non-volatile memory (such as read only memory (ROM), electrically erasable programmable read only memory (EEPROM) or flash memory), or any combination thereof. The storage unit 3930 can be any removable or non-removable media, and can include machine-readable media, such as a memory, a flash drive, a disk, or other media that can be used to store information and / or data and that can be accessed by the computing device 3900.
[0237] The computing device 3900 can also include additional removable / non-removable storage media, volatile / non-volatile memory media. Although not shown in FIG. 39 a disk drive for reading from and / or writing to a removable, non-removable, and / or non-volatile media such as a magnetic disk, and an optical disk drive for reading from and / or writing to a removable, non-removable, and / or non-volatile media such as an optical disk. In such instances, each drive can be connected to the bus (not shown) by one or more data media interfaces.
[0238] The communication unit 3940 communicates with another computing device via a communication medium. In addition, the functions of the components in the computing device 3900 can be implemented by a single computing cluster or multiple computing machines that can communicate via a communication connection. Thus, the computing device 3900 can operate in a networked environment using logical connections to one or more other servers, networked personal computers (PCs), or other general-purpose network nodes.
[0239] Input device 3950 may be one or more of various input devices, such as a mouse, keyboard, trackball, voice input device, and the like. Output device 3960 may be one or more of various output devices, such as a display, speaker, printer, and the like. With the aid of communication unit 3940, computing device 3900 may also communicate with one or more external devices (not shown), such as storage devices and display devices, one or more devices that enable a user to interact with computing device 3900, or, if desired, any device that enables computing device 3900 to communicate with one or more other computing devices (e.g., a network card, a modem, and the like). Such communication may be performed via an input / output (I / O) interface (not shown).
[0240] In some embodiments, some or all components of the computing device 3900 may also be arranged in a cloud computing architecture rather than being integrated into a single device. In a cloud computing architecture, components can be provided remotely and work together to implement the functionality described in this disclosure. In some embodiments, cloud computing provides computing, software, data access, and storage services without requiring the end user to know the physical location or configuration of the systems or hardware providing these services. In various embodiments, cloud computing provides services via a wide area network (such as the Internet) using appropriate protocols. For example, a cloud computing provider provides an application via a wide area network that can be accessed through a web browser or any other computing component. The software or components of the cloud computing architecture and the corresponding data may be stored on servers in a remote location. Computing resources in a cloud computing environment may be consolidated or distributed across remote data centers. Cloud computing infrastructure can provide services through shared data centers, although to users, they appear as a single access point. Therefore, cloud computing architecture can be used to provide the components and functionality described herein from a service provider in a remote location. Alternatively, the components and functionality described herein may be provided by a conventional server or installed directly or otherwise on a client device.
[0241] In embodiments of the present disclosure, the computing device 3900 can be used to implement video encoding / decoding. The memory 3920 can include one or more video coding modules 3925 having one or more program instructions. These modules are accessible by and executable upon the processing unit 3910 to perform the functions of the various embodiments described herein.
[0242] In example embodiments performing video encoding, the input device 3950 can receive video data as input 3970 to be encoded. The video data can be processed, e.g., by the video coding module 3925, to generate an encoded bitstream. The encoded bitstream can be provided as output 3980 via the output device 3960.
[0243] In example embodiments performing video decoding, the input device 3950 can receive an encoded bitstream as input 3970. The encoded bitstream can be processed, e.g., by the video coding module 3925, to generate decoded video data. The decoded video data can be provided as output 3980 via the output device 3960.
[0244] While the present disclosure has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details can be made therein without departing from the spirit and scope of the application as defined by the appended claims. Such variations are intended to be covered by the scope of this application. Therefore, the foregoing description of embodiments of the application is not intended to be limiting.
Claims
1. A method for video processing, comprising: For conversion between a current video block of a video and a bitstream of the video, determining a cross-component prediction (CCP) candidate list for the current video block, the CCP candidate list comprising at least one CCP candidate; reordering the at least one CCP candidate in the CCP candidate list; as well as The converting is performed based on the reordered CCP candidate list.
2. The method according to claim 1, wherein the CCP candidate list includes at least one of the following: Candidates with CCP information stored in adjacent neighboring blocks, Candidates with CCP information stored in non-adjacent neighboring blocks, A candidate with CCP information stored in a history-based table, or Candidates with CCP information derived from non-adjacent samples.
3. The method according to claim 2 or 3, wherein information about whether and / or how to reorder the CCP candidate list is indicated in the bitstream, and the information is at least one of the following: block level, sequence level, picture level, slice level, or slice group level.
4. The method of claim 3, wherein the information is included in at least one of the following codec structures: a codec tree unit (CTU), a codec unit (CU), a transform unit (TU), a prediction unit (PU), a codec tree block (CTB), a codec block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a slice group header.
5. The method according to any one of claims 1 to 4, wherein a rule for the reordering of the CCP candidate list at an encoder is the same as a rule for the reordering of the CCP candidate list at a decoder. 6 . The method according to claim 1 , wherein an index of a target CCP candidate in the reordered CCP candidate list is indicated in the bitstream, and the target CCP candidate having the index is used for the conversion.
7. The method according to any one of claims 1 to 6, wherein the information on whether to reorder the candidates in the CCP candidate list and / or how to reorder the candidates in the CCP candidate list is based on the position of the candidates in the CCP candidate list.
8. The method of claim 7, wherein the first M candidates in the CCP candidate list are reordered, M being an integer greater than or equal to 0 and not greater than the size of the CCP candidate list.
9. The method according to any one of claims 1 to 8, wherein the information on whether to reorder the candidates in the CCP candidate list and / or how to reorder the candidates in the CCP candidate list is based on at least one of the following: the type of the candidate, or the CCP information of the candidate.
10. The method of claim 9, wherein candidates having a feature in the CCP candidate list are placed forward in the reordering. The method of claim 9 , wherein candidates having a feature in the CCP candidate list are placed backward in the reordering. The method according to claim 9 , wherein candidates having the feature are not involved in the re-ranking.
13. The method according to any one of claims 10 to 12, wherein the features include at least one of the following: The candidate is a default CCP candidate that populates the CCP candidate list, The candidate has CCP information stored in at least one adjacent neighboring block, The candidate has CCP information stored in at least one non-adjacent neighboring block, The candidate has CCP information stored in a block at a location, The candidate has CCP information stored in a history-based table, The candidate has CCP information stored in a history-based table that is updated online, The candidate has CCP information stored in a stored history-based table, The candidate has CCP information stored in a history-based table at the entry, The candidate has CCP information, The candidate has CCP information derived from non-adjacent samples, The candidate has CCP information derived from non-adjacent samples at a position, or The candidate is associated with a CCP mode.
14. The method according to claim 13, wherein the CCP method comprises at least one of the following: Cross-Component Linear Model (CCLM), CCLM based on the top neighboring samples of the current video block (CCLM-T), Based on the CCLM of the left neighboring samples of the current video block (CCLM-L), Multi-model based CCLM (MM-CCLM), Multi-model based CCLM-T (MM-CCCM-T), Multi-model based CCLM-L (MM-CCCM-L), Convolutional Cross-Component Model (CCCM), Based on the CCCM of the top neighboring samples of the current video block (CCCM-T), Based on the CCCM of the left neighboring samples of the current video block (CCCM-L), Multi-model based CCCM (MM-CCCM), Multi-model based CCCM-T (MM-CCCM-T), Multi-model based CCCM-L (MM-CCCM-L), Gradient linear model (GLM) using downsampled filters, A GLM with luminance using a downsampling filter, Gradient and position-based CCCM (GL-CCCM), or Use CCCM of luma samples without downsampling.
15. The method according to any one of claims 1 to 14, wherein the reordering is performed in a conditional manner.
16. The method of claim 15, wherein the reordering is skipped if the number of candidates in the CCP candidate list is less than a threshold.
17. The method of claim 15, wherein the reordering is skipped based on at least one of the following conditions being met: A first condition is that the width of the current video block is greater than or equal to a threshold width; A second condition is that the width of the current video block is less than or equal to a threshold width; A third condition is that the height of the current video block is greater than or equal to a threshold height; A fourth condition is that the height of the current video block is less than or equal to a threshold height; A fifth condition is that the size of the current video block is greater than or equal to a threshold size; or A sixth condition is that the size of the current video block is smaller than or equal to a threshold size.
18. The method of claim 15, wherein the reordering is skipped based on codec information, the codec information comprising at least one of: a codec mode, a quantization parameter, neighborhood information, a color component, or a color format.
19. The method according to any one of claims 1 to 18, wherein the reordering is performed once for at least two color components.
20. The method of claim 19, wherein the at least two color components include Cb and Cr.
21. The method according to any one of claims 1 to 18, wherein the reordering is performed separately for different color components, the different color components comprising Cb and Cr.
22. The method according to any one of claims 1 to 21, wherein reordering the CCP candidate list is based on cost comparison.
23. The method of claim 22, wherein for each candidate in the CCP candidate list involved in the reordering, a cost associated with the candidate is determined.
24. The method of claim 22 or 23, wherein the involved candidates in the CCP candidate list are placed in ascending order based on costs associated with the involved candidates.
25. The method of claim 22 or 23, wherein the involved candidates in the CCP candidate list are placed in descending order based on costs associated with the involved candidates.
26. The method of any one of claims 22 to 25, wherein the costs associated with the candidates in the CCP candidate list comprise template costs, the template costs being determined based on reconstructed samples neighboring the current video block, the reconstructed samples corresponding to a template.
27. The method of claim 26, wherein the template consists of reconstructed samples to the left of the current video block if the reconstructed samples to the left of the current video block are available.
28. The method of claim 26, wherein the template consists of reconstructed samples above the current video block if the reconstructed samples above the current video block are available.
29. The method of claim 26, wherein if reconstructed samples to the left or above the current video block are available, the template consists of the reconstructed samples to the left or above the current video block.
30. The method of any one of claims 22 to 29, wherein the costs of candidates in the CCP candidate list are determined in a process comprising at least one of: The first step is to determine the CCP on the sample points of the template of the current video block; or The second step is to determine the distortion between the predicted sample points and the reconstructed sample points of the template as the cost.
31. The method of claim 30, wherein the CCP is applied to the template in the same manner as a CCP associated with the candidate is applied to the current video block.
32. The method of claim 31, wherein luma samples of an area corresponding to the template are obtained by downsampling as required by the candidate.
33. The method of any one of claims 30 to 32, wherein the candidate CCP model used to generate a prediction of the current video block is used to determine the prediction samples of the template.
34. The method of claim 33, wherein when determining the prediction samples of the template using the CCP model, the prediction samples are modified.
35. The method of claim 34, wherein an offset of the template is added to the prediction samples.
36. The method of claim 35, wherein the offset of the template is determined by a method used to determine an offset for a CCP prediction sample in the current video block.
37. The method according to any one of claims 30 to 36, wherein a threshold used to separate at least two models in the current video block is used to separate models in the template.
38. The method of claim 37, wherein the current video block is at least one of: Multi-model based convolutional cross-component model (MM-CCCM), or Multiple model-based cross-component linear model (MM-CCLM).
39. The method of any one of claims 30 to 38, wherein the distortion comprises at least one of: Sum of Absolute Differences (SAD), Sum of Squared Differences (SSD), Mean removal SAD, or Sum of Absolute Transform Differences (SATD).
40. The method according to any one of claims 30 to 39, wherein the costs are determined separately for different color components, the color components comprising a Cb component and a Cr component.
41. The method of claim 40, wherein the cost on a single color component is used to reorder candidates in the CCP candidate list.
42. The method of claim 40, wherein a total cost over a plurality of color components is used to reorder candidates in the CCP candidate list, the plurality of color components comprising Cb components and Cr components.
43. The method of any one of claims 1 to 42, wherein when determining the CCP candidate list, potential CCP candidates are reordered.
44. The method of claim 43, wherein the potential CCP candidate has a characteristic.
45. The method of claim 44, wherein the characteristics include at least one of: The potential CCP candidates are default CCP candidates that populate the CCP candidate list, The potential CCP candidate has CCP information stored in at least one adjacent neighboring block, The potential CCP candidate has CCP information stored in at least one non-adjacent neighboring block, The potential CCP candidate has CCP information stored in a block at a location, The potential CCP candidate has CCP information stored in a history-based table, The potential CCP candidates have CCP information stored in a history-based table that is updated online, The potential CCP candidate has CCP information stored in a stored history-based table, The potential CCP candidate has CCP information stored in a history-based table at an entry, The potential CCP candidate has CCP information, or The potential CCP candidates have CCP information derived from non-adjacent samples.
46. The method of any one of claims 43 to 45, wherein all or some of the potential CCP candidates are checked and re-ranked, and the top N potential CCP candidates are added to the CCP candidate list, N being an integer greater than or equal to 0.
47. The method of claim 46, wherein the top N potential CCP candidates maintain order when they are in the CCP candidate list.
48. The method of claim 43, wherein the reordering of the potential CCP candidates is based on a comparison of costs of the potential CCP candidates.
49. The method of any one of claims 1 to 48, wherein the syntax elements in the bitstream are binarized into at least one of: a flag, a fixed-length code, an Exponential Golomb (x) (EG(x)) code, a unary code, a truncated unary code, or a truncated binary code.
50. The method of claim 49, wherein the syntax elements are signed or unsigned.
51. The method according to any one of claims 1 to 50, wherein syntax elements in the bitstream are encoded or decoded using at least one context model, or are bypass encoded or decoded.
52. The method of any one of claims 49 to 51, wherein the syntax element is included in the bitstream based on a condition that a function associated with the syntax element is applicable.
53. The method of any one of claims 49 to 51, wherein the syntax element is included in the bitstream if a dimension of the current video block satisfies a condition.
54. The method of any one of claims 49 to 53, wherein the syntax element is at at least one of: block level, sequence level, group of pictures level, picture level, slice level, or slice group level.
55. The method of any one of claims 49 to 54, wherein the syntax element is in at least one of the following codec structures: a codec tree unit (CTU), a codec unit (CU), a transform unit (TU), a prediction unit (PU), a codec tree block (CTB), a codec block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a slice group header.
56. The method according to any one of claims 1 to 55, wherein information on whether and / or how to apply the method is included in the bitstream.
57. The method of claim 56, wherein the information is indicated at one of: sequence level, group of pictures level, picture level, slice level, or slice group level.
58. The method of claim 56 or 57, wherein the information is indicated in at least one of the following codec structures: a codec tree unit (CTU), a codec unit (CU), a transform unit (TU), a prediction unit (PU), a codec tree block (CTB), a codec block (CB), a transform block (TB), a prediction block (PB), a sequence header, a picture header, a sequence parameter set (SPS), a video parameter set (VPS), a decoding parameter set (DPS), decoding capability information (DCI), a picture parameter set (PPS), an adaptation parameter set (APS), a slice header, or a slice group header.
59. The method of any one of claims 56 to 58, wherein the information is based on coded information, wherein the coded information comprises at least one of: block size, color format, single tree partitioning or dual tree partitioning, color component, slice type, or picture type.
60. The method according to any one of claims 1 to 59, wherein the method is used in a codec requiring chroma fusion.
61. The method of any one of claims 1 to 59, wherein the converting comprises encoding the current video block into the bitstream.
62. The method of any one of claims 1 to 59, wherein the converting comprises decoding the current video block from the bitstream.
63. An apparatus for video processing, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to perform the method of any one of claims 1 to 62.
64. A non-transitory computer-readable storage medium storing instructions, wherein the instructions cause a processor to execute the method according to any one of claims 1 to 62.
65. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method performed by an apparatus for video processing, wherein the method comprises: determining a cross-component prediction (CCP) candidate list for a current video block of the video, the CCP candidate list comprising at least one CCP candidate; reordering the at least one CCP candidate in the CCP candidate list; as well as The bitstream is generated based on the reordered CCP candidate list.
66. A method for storing a bitstream of a video, comprising: determining a cross-component prediction (CCP) candidate list for a current video block of the video, the CCP candidate list comprising at least one CCP candidate; reordering the at least one CCP candidate in the CCP candidate list; generating the bitstream based on the reordered CCP candidate list; as well as The bitstream is stored in a non-transitory computer-readable recording medium.