Cross-component prediction between images

By inheriting and updating cross-component coding models from differently encoded blocks, the method addresses inefficiencies in existing methods, enhancing the correlation and compression efficiency of video coding.

JP2026511121APending Publication Date: 2026-04-10INTERDIGITALCE PATENT HLDG SAS
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-03-18
Publication Date
2026-04-10

AI Technical Summary

Technical Problem

Existing cross-component prediction methods in video coding, such as NA-CCP and H-CCP, struggle with inefficiency due to infrequent updates of stored CC coding tool models, leading to poor correlation with current block signal characteristics.

Method used

Implement a method where the model for cross-component coding mode of a first block is obtained from a second block encoded using a different mode, with model inheritance and update mechanisms to improve correlation.

Benefits of technology

Enhances the efficiency of cross-component prediction by ensuring that the models used are more closely aligned with the current block's signal characteristics, improving compression performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026511121000001_ABST
    Figure 2026511121000001_ABST
Patent Text Reader

Abstract

A method comprising obtaining a first block for reconstruction using a cross-component coding mode, wherein the model of the cross-component coding mode to be applied to reconstruct the first block is obtained from the model of the cross-component coding mode associated with a reconstructed second block, the second block being reconstructed using a mode different from the cross-component coding mode.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] At least one current embodiment relates to a method and apparatus for applying history-based cross-component predictions. [Background technology]

[0002] This application claims priority over European Patent Application No. 23305388.3, ​​filed on 22 March 2023 (hereinafter incorporated in its entirety by reference), and European Patent Application No. 23306017.7, filed on 26 June 2023 (hereinafter incorporated in its entirety by reference).

[0003] To achieve high compression efficiency, video coding schemes typically employ prediction and transformation to leverage spatial and temporal redundancy within video content. During encoding, the video content image is divided into blocks of samples (i.e., pixels), which are then further divided into one or more subblocks, referred to below as original subblocks. For each subblock, intra-prediction or inter-prediction is then applied to leverage correlations within or between images. Regardless of the prediction method (intra or inter), a predicted subblock is determined for each original subblock. Subsequently, to generate the encoded video stream, a subblock representing the difference between the original and predicted subblocks (referred to as the predicted error subblock, predicted residual subblock, or simply residual subblock) is transformed, quantized, and entropy-coded. To reconstruct the video, the compressed data is decoded through the inverse process, which corresponds to transformation, quantization, and entropy coding.

[0004] In recent years, intra-prediction has been improved to better correlate components within a block. Novel tools have been proposed featuring cross-component intra-prediction, where a model is used to predict the chroma samples of a block from reconstructed luma samples of the block. Some of these cross-component (CC) coding tools (or CC coding modes) use a CC coding tool to utilize a pre-coded block model. These CC coding tools are called non-adjacent CC prediction (NA-CCP) or history-based CC prediction (H-CCP), and the CC coding tool model applied to a block is retained for future use. When the current block is coded using a CC coding tool, its parameters are selected from a pre-stored set of CC coding tool models. The index of the selected model is then communicated to the current block. However, most blocks between slices are encoded in inter-mode. Therefore, the stored CC coding tool models are rarely updated. The stored CC coding tool models may not correlate well with the signal characteristics of the current block. This can reduce the efficiency of NA-CCP or H-CCP.

[0005] It is desirable to propose solutions that can overcome the above challenges. In particular, it is desirable to propose solutions that improve NN-CCP and H-CCP. [Brief explanation of the drawing]

[0006] [Figure 1] This diagram schematically illustrates the context in which the embodiment is implemented. [Figure 2] This diagram schematically illustrates an example of how pixels in an original video are divided into images. [Figure 3] This diagram schematically illustrates the method of encoding a video stream. [Figure 4] This diagram schematically illustrates the method for decoding an encoded video stream. [Figure 5A] FIG. is a diagram schematically showing an example of a hardware architecture of a processing module capable of implementing an encoding module or a decoding module in which various aspects and embodiments are implemented. [Figure 5B] FIG. is a block diagram showing an example of a first system in which various aspects and embodiments are implemented. [Figure 5C] FIG. is a block diagram showing an example of a second system in which various aspects and embodiments are implemented. [Figure 6A] FIG. shows the LM_Chroma CCLM mode. [Figure 6B] FIG. shows the MDLM_T CCLM mode. [Figure 6C] FIG. shows the MDLM_L CCLM mode. [Figure 7] FIG. shows the classification used to determine model parameters in the Multi-model LM (MMLM) mode. [Figure 8] FIG. shows the 5-tap spatial filter component of the 7-tap convolutional filter used in the CCCM mode. [Figure 9] FIG. shows a reference region composed of 6 rows / columns of chroma samples arranged above and to the left of the CU used in the CCCM mode. [Figure 10] FIG. shows the general processing of CC coding tools (e.g., CCLM, MMLM, CCCM). [Figure 11] FIG. shows a set of candidate regions for the non-adjacent cross-component prediction mode. [Figure 12] FIG. shows the spanInfo processing. [Figure 13] FIG. schematically shows a modified method for encoding video data according to an embodiment. [Figure 14] FIG. schematically shows a method for decoding encoded video data according to an embodiment. [Figure 15]This diagram shows how to inherit candidate blocks coded in the current image. [Modes for carrying out the invention]

[0007] In a first embodiment, one or more of the present embodiments provide a method comprising: obtaining a first block for reconfiguration using a cross-component coding mode, wherein the model of the cross-component coding mode to be applied to reconfigure the first block is obtained from the model of the cross-component coding mode associated with a reconfigured second block, the second block being reconfigured using a mode different from the cross-component coding mode.

[0008] In a second embodiment, one or more of the present embodiments provide a method comprising applying a cross-component coding mode to a first block, wherein the model of the cross-component coding mode for application to the first block is obtained from a model of the cross-component coding mode associated with a second block encoded prior to the first block, the second block being encoded using a mode different from the cross-component coding mode.

[0009] According to one embodiment of the first and second aspects, the model of the cross-component coding mode associated with the reconstructed second block is stored in at least one cell corresponding to the second block of a first buffer that stores coding parameters for the current image block comprising the first and second blocks.

[0010] According to one embodiment of the first and second aspects, the cell of at least one cell inherits a model of the cross-component coding mode associated with the reconstructed second block from another cell corresponding to a reference block of a reference image specified by the motion information of the second block (1302, 1402), the other cell being provided in a second buffer for storing coding parameters of the block of the reference image.

[0011] According to one embodiment of the first and second aspects, the cell of at least one cell inherits from another cell the model of the cross-component coding mode associated with the reconfigured second block, depending on a value representing the quality of the model of the cross-component coding mode inherited from the second block by the first block.

[0012] According to one embodiment of the first and second aspects, the model of the cross-component coding mode to be applied to the first block is selected from a table that stores the models of the cross-component coding mode for the last reconfigured block for which the models of the cross-component coding mode are available, and the table is updated after the reconfiguration of the block for which the models of the cross-component coding mode are available.

[0013] According to one embodiment of the first and second aspects, the model of the cross-component coding mode for application to the first block is selected from the model of the cross-component coding mode in a candidate region list or a candidate block list, and the regions of the candidate region list and the blocks of the candidate block list are located in the vicinity of the first block.

[0014] According to one embodiment of the first and second aspects, the model for the cross-component coding mode is computed for the reconstructed blocks predicted using a different mode from the cross-component coding mode.

[0015] In a third embodiment, one or more of the present embodiments provide a method for decoding a current image, comprising applying the method of the first embodiment to reconstruct the current block of the current image in a cross-component coding mode.

[0016] In a fourth embodiment, one or more of the present embodiments provide a method for encoding a current image, comprising applying the method of the second embodiment to reconstruct the current block of the current image in a cross-component coding mode.

[0017] In one embodiment of the third and fourth aspects, information representing the model of the cross-component coding mode applied to reconstruct the first block is stored in at least one cell corresponding to the current block of the current buffer that stores the coding parameters associated with the current image.

[0018] In a fifth embodiment, one or more of the present embodiments provides an apparatus comprising an electrical circuit configured such that a first block is obtained for reconfiguration using a cross-component coding mode, the model of the cross-component coding mode to be applied to reconfigure the first block is obtained from the model of the cross-component coding mode associated with a reconfigured second block, the second block being reconfigured using a mode different from the cross-component coding mode.

[0019] In a sixth embodiment, one or more of the present embodiments provides an apparatus comprising an electronic circuit configured to apply a cross-component coding mode to a first block, wherein the model of the cross-component coding mode for application to the first block is obtained from a model of the cross-component coding mode associated with a second block encoded prior to the first block, the second block being encoded using a mode different from the cross-component coding mode.

[0020] In one embodiment of the fifth and sixth aspects, the model of the cross-component coding mode associated with the reconstructed second block is stored in at least one cell corresponding to the second block of a first buffer that stores coding parameters for the current image block comprising the first and second blocks.

[0021] In one embodiment of the fifth and sixth aspects, the cell of at least one cell inherits a model of the cross-component coding mode associated with the reconstructed second block from another cell corresponding to a reference block of a reference image specified by the motion information of the second block, the other cell being provided in a second buffer for storing coding parameters of the block of the reference image.

[0022] In one embodiment of the fifth and sixth aspects, the cell of at least one cell inherits from another cell the model of the cross-component coding mode associated with the reconfigured second block, depending on a value representing the quality of the model of the cross-component coding mode inherited from the second block by the first block.

[0023] In one embodiment of the fifth and sixth aspects, the model of the cross-component coding mode to be applied to the first block is selected from a table that stores the models of the cross-component coding mode for the last reconfigured block for which the models of the cross-component coding mode are available, and the table is updated after the reconfiguration of the block for which the models of the cross-component coding mode are available.

[0024] In one embodiment of the fifth and sixth aspects, the model of the cross-component coding mode for application to the first block is selected from the model of the cross-component coding mode in a candidate region list or a candidate block list, and the regions of the candidate region list and the blocks of the candidate block list are located in the vicinity of the first block.

[0025] In one embodiment of the fifth and sixth aspects, the model for the cross-component coding mode is computed for the reconstructed block that is predicted using a different mode from the cross-component coding mode.

[0026] In a seventh embodiment, one or more of the present embodiments provide a system for decoding a current image, comprising an apparatus of the fifth embodiment and an electronic circuit configured to reconstruct the current block of the current image in a cross-component coding mode.

[0027] In the eighth embodiment, one or more of the present embodiments provide a system for encoding a current image, comprising an apparatus of the sixth embodiment and an electronic circuit configured to reconstruct the current block of the current image in a cross-component coding mode.

[0028] In one embodiment of the seventh or sixth aspect, information representing the model of the cross-component coding mode applied to reconstruct the first block is stored in at least one cell corresponding to the current block in the current buffer that stores the coding parameters associated with the current image.

[0029] In the ninth embodiment, one or more of the present embodiments provide a computer program comprising program code instructions for performing the method of the first, second, third, or fourth embodiment.

[0030] In the ninth embodiment, one or more of the present embodiments provide a non-temporary information storage medium for storing program code instructions for performing the methods of the first, second, third, or fourth embodiment.

[0031] The following examples of embodiments are described in the context of video formats similar to VVC (ISO / IEC 23090-3-MPEG-I: Versatile Video Coding (VVC) / ITU-T H.266). However, these embodiments are not limited to video coding / decoding methods corresponding to VVC. These embodiments are particularly applicable to a variety of video formats, including (and derived from) HEVC (ISO / IEC 23008-2-MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265), AVC (ISO / CEI 14496-10), EVC (Essential Video Coding / MPEG-5), AV1, AV2, and VP9.

[0032] Figure 1 is a schematic diagram illustrating the context in which the embodiment is implemented.

[0033] In Figure 1, System 11, which may be a camera, storage device, computer, server, or any device capable of distributing a video stream, transmits the video stream to System 13 using a communication channel 12. The video stream is either encoded and transmitted by System 11, or received and / or stored by System 11 and then transmitted. The communication channel 12 is a wired (e.g., Internet or Ethernet) or wireless (e.g., Wi-Fi, 3G, 4G, or 5G) network link.

[0034] System 13 may be, for example, a set-top box, which receives and decodes a video stream and generates a sequence of decoded images. Post-processing may be applied to the decoded images.

[0035] The acquired and decoded sequence of images is then transmitted to the display system 15 using a communication channel 14, which may be a wired or wireless network. The display system 15 then displays the images.

[0036] In one embodiment, system 13 is included in display system 15. In this case, system 13 and display system 15 are included in televisions, computers, tablets, smartphones, head-mounted displays, etc.

[0037] Figures 2, 3, and 4 show examples of video formats.

[0038] Figure 2 shows an example of the division performed by the image 21 of the pixels in the original video sequence 20. Here, we consider each pixel to consist of three components: a luminance component and two chroma components. However, other types of pixels may contain only a luminance component, or fewer or more components, such as additional depth or transparency components.

[0039] An image is divided into multiple coding entities. Firstly, as shown by reference no. 23 in Figure 2, an image is divided into a grid of blocks called coding tree units (CTUs). A CTU consists of N × N luminance sample blocks and two corresponding chroma sample blocks. Typically, N is a power of 2, with a maximum value such as "128". Secondly, an image is divided into one or more groups of CTUs. For example, it can be divided into one or more tile rows and tile columns, where a tile is a sequence of CTUs covering a rectangular area of ​​the image. In some cases, a tile may be divided into one or more "bricks," each brick consisting of at least one row of CTUs within the tile. Above the concepts of tiles and bricks, there exists another encoding entity called a slice, which can contain at least one tile or at least one brick of a tile in an image.

[0040] In the example in Figure 2, as indicated by reference numeral 22, image 21 is divided into three slices S1, S2, and S3 in raster scan slice mode, each slice containing multiple tiles (not shown), and each tile containing only one brick.

[0041] As shown by reference numeral 24 in Figure 2, a CTU can be divided into a hierarchical tree form of one or more subblocks called "coding units (CUs)". The CTU is the root (i.e., parent node) of the hierarchical tree and can be divided into multiple CUs (i.e., child nodes). Each CU becomes a leaf of the hierarchical tree unless it is further divided into smaller CUs, and becomes the parent node of the smaller CUs (child nodes) if it is further divided.

[0042] In the example in Figure 2, CTU24 is first divided into "four" square CUs using a quad-tree type splitting. The top-left CU is a leaf in the hierarchical tree because it is not further divided, i.e., it is not the parent node of the other CUs. The top-right CU is further divided into "four" smaller square CUs, again using a quad-tree type splitting. The bottom-right CU is vertically divided into "two" rectangular CUs using a binary-tree type splitting. The bottom-left CU is vertically divided into "three" rectangular CUs using a ternary-tree type splitting.

[0043] During image coding, the division is adaptive, and each CTU is divided to optimize the compression efficiency based on the CTU standard.

[0044] In HEVC, the concepts of prediction units (PUs) and transformation units (TUs) exist. In fact, in HEVC, the coding entities used for prediction (i.e., PUs) and transformation (i.e., TUs) can be subdivisions of a CU. For example, as shown in Figure 2, a CU of size 2N × 2N can be divided into PUs of size N × 2N or PUs of size 2N × N. Furthermore, this CU can be divided into "4" TUs of size N × N, or into "16" TUs of size (N / 2) × (N / 2).

[0045] In VVCs, it should be noted that, with some special cases, the boundaries between TUs and PUs coincide with the boundaries of CUs. Therefore, a CU typically contains one TU and one PU.

[0046] In this application, the terms “block” or “image block” may be used to refer to any of CTU, CU, PU, ​​and TU. In addition, the terms “block” or “image block” may also be used to refer to macroblocks, divisions, subblocks as defined in H.264 / AVC or other video coding formats, and more generally, to sequences of samples of various sizes.

[0047] In this application, "reconstruction" and "decode" may be used interchangeably, "pixel" and "sample" may be used interchangeably, and "image," "picture," "subimage," "slice," and "frame" may be used interchangeably. Typically, though not always, the term "reconstruction" is used on the encoder side, and the term "decode" is used on the decoder side.

[0048] Figure 3 schematically illustrates the method of encoding a video stream performed by the encoding module. For example, the encoding method in Figure 3 is performed by system 11. While variations of this encoding method are possible, for the sake of clarity, the encoding method in Figure 3 is described without explaining all possible variations.

[0049] Before encoding, the current original image of the original video sequence may be preprocessed. For example, in step 301, a color conversion (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0) may be applied to the current original image, or a remapping may be applied to the components of the current original image to obtain a signal distribution that is resistant to compression (e.g., histogram equalization may be used for one of the color components). The image obtained through preprocessing will be referred to as the preprocessed image below.

[0050] The encoding of the preprocessed image begins with the division of the preprocessed image in step 302, as described in relation to Figure 2. This divides the preprocessed image into CTU, CU, PU, ​​TU, etc.

[0051] Next, the encoding module determines the coding mode for each block between intra-prediction and inter-prediction.

[0052] Intra-prediction, in step 303, consists of predicting the pixels of the current block from predicted blocks derived from the pixels of reconstructed blocks located in causally related neighbors of the current block being encoded, according to the intra-prediction method. The result of intra-prediction is an intra-prediction mode indicating which pixels of neighboring blocks to use, and a residual block which is the result of calculating the difference between the current block and the predicted block.

[0053] The standard intra-prediction described above applies to intra-prediction of a single component (Y, Cb, or Cr), meaning that prediction samples are only made from reference samples of the same component. This standard intra-prediction is sometimes called "intra-component prediction." Intra-prediction has recently been extended by several tools (or modes) that perform intra-prediction across different components, meaning that samples for a first component are predicted using samples for a second component. These tools (modes) are generally called cross-component prediction tools.

[0054] For example, a cross-component linear model (CCLM) prediction mode has been proposed, which uses a cross-component (CC) prediction model in the form of a linear model to predict chroma samples of a CU based on reconstructed luma samples of the same CU.

[0055]

number

[0056] Here, pred Ck (i,j) represents the chromatic component C within CU. k (For example, for YUV format, C k =U or V) represents the predicted chroma sample, rec L ´ (i,j) represents the reconstructed lumens sample, which is ultimately downsampled according to the chroma format of the CU. CCLM parameter αCk and β Ck For each chroma component, it is derived using a set of adjacent chroma samples of the same chroma component and their corresponding luma samples (downsampled if necessary). In some implementations, a subset of adjacent chroma samples (e.g., up to 4) and their corresponding luma samples are used. Also, the positions of adjacent samples can be specified in the bitstream. For example, in VVC, there are 3 different CCLM modes (LM_CHROMA, MDLM_T, MDLM_L) depending on the positions of adjacent chroma samples.

[0057] Figure 6A shows the LM_Chroma CCLM mode.

[0058] Figure 6B shows the MDLM_T CCLM mode.

[0059] Figure 6C shows the MDLM_L CCLM mode.

[0060] The CCLM mode to be used is coded for each CU.

[0061] The set of adjacent luma samples around the selected position is downsampled according to the requirements of the chroma format, and two small values (x 0 A and x<I 1 A ) and two large values (x 0 B and x 1 B ) are compared and extracted. The corresponding chroma sample values are denoted as y 0 A , y 1 A , y 0 B , and y 1 B . Next, X a , X b , Y a , and y B are derived as follows.

[0062]

number

[0063] Ultimately, the parameter α of the linear model Ck and β Ck It can be calculated using the following formula.

[0064]

number

[0065] Multiple variations of CCLM exist, including a) the location and / or number of adjacent samples used to derive the model, and b) the linear model parameters (α Ck , β Ck The method for deriving (c) or the lumens downsampling filter may differ.

[0066] For example, in a variant called MMLM (Multi-Model LM), multiple linear models can exist between lumana samples and chroma samples within a CU. In this method, adjacent lumana samples and adjacent chroma samples in the current block are classified into multiple classes, and each class is used as a training dataset to derive a linear model (i.e., a specific alpha for a particular classification). Ck , and β Ck (This is derived). Furthermore, the sample in the current ruma block is also classified based on the same rules as the classification of adjacent ruma samples.

[0067] In some implementations of MMLM (for example, the paper "Enhanced Cross-component Linear Model Intra-prediction" by K. Zhang, J. Chen, L. Zhang, and M. Karczewicz, JVET-D0110), adjacent samples are classified into M classes, where M is "2" or "3". The MMLM methods for M=2 and M=3 are designed as two additional CC prediction modes, MMLM2 and MMLM3, in addition to the original CCLM mode. The encoder selects the optimal mode during RDO processing and notifies the system of that mode.

[0068] When M is "2", Figure 7 shows an example of classifying adjacent samples into two groups. The threshold is calculated as the mean of adjacent reconstructed lumens. Adjacent samples with Rec'L[x,y] ≤ threshold are classified into group "1", and adjacent samples with Rec'L[x,y] > threshold are classified into group "2".

[0069] In the variant, gradient adjustment is applied to cross-component linear models (CCLM) and multi-model LM predictions. This adjustment involves sloping the linear function that maps lumens to chroma values ​​with respect to a center point determined by the mean lumens of the reconstructed lumens samples.

[0070] In CCCM, a variant of CCLM, the linear model of CCLM is replaced by a CC prediction model in the form of an adaptive 7-tap convolutional filter. The 7-tap convolutional filter consists of a 5-tap spatial filter component, a nonlinear term P, and a bias term B. The input to the 5-tap spatial filter component consists of downsampled lumar samples, which include a central lumar sample C located at the same position as the chroma sample to be predicted, a lumar sample N above the central lumar sample C, a lumar sample S below the central lumar sample C, a sample W to the left of the central lumar sample C, and a sample E to the right of the central lumar sample C, as shown in Figure 8.

[0071] The nonlinear term P is expressed as the square of the central lumen sample C and is scaled to a range of sample values ​​specified by the bitdepth value.

[0072] P=(C * C+midVal)>>bitDepth

[0073] In other words, for bitdepth=10, the following applies:

[0074] P=(C * C+512)>>10

[0075] The bias term B (similar to the offset term in CCLM) represents a scalar offset between the input and output and is set to an intermediate chroma value (e.g., 512 when bitdepth=10).

[0076] Chroma component C k The predicted chroma sample (i.e., the output of a 7-tap convolutional filter) is obtained by the filter coefficient ci Ck It is calculated as a convolution with the input values ​​(reconstructed chroma samples C, N, S, E, W, nonlinear term P, and bias B) and clipped to the range of valid chroma samples.

[0077]

number

[0078] Filter coefficient ci Ck This is calculated by minimizing the MSE between the predicted chroma sample and the reconstructed chroma sample within the reference region. Figure 9 shows a reference region consisting of 6 rows / columns of chroma samples located at the top and left side of the CU. The reference region is extended 1 CU width to the right and 1 CU height downward from the boundary of the CU. The region is adjusted to include only available samples.

[0079] As a variation, in a technique called gradient and position (GL)CCCM, a portion of the input to a spatial 5-tap spatial filter can become a local gradient, as follows:

[0080]

number

[0081] Here, Gy and Gx represent the vertical and horizontal gradients, respectively, and are calculated as follows.

[0082]

number

[0083] Ruma's samples (NW, NE, SW, SE) are shown in Figure 8.

[0084] Furthermore, the Y and X parameters are the vertical and horizontal coordinates of the central luma sample's position.

[0085] In another variation, the reconstructed rumor sample is not downsampled.

[0086] A typical process using a cross-component lumens model in chroma prediction modes (e.g., CCLM, MMLM, CCCM) is shown in Figure 10. The process in Figure 10 is performed by a processing module similar to the processing module described below, in relation to Figure 5A.

[0087] In step 1010, the processing module selects reference samples (reconstructed lumens and chroma sample values) from the vicinity of the current CU. For example, CCCM uses the six rows of reference samples at the top of the current CU and the six columns of reference samples to the left of the current CU.

[0088] In step 1015, the processing module filters the reconstructed lumens sample values ​​to obtain the downsampled lumens sample. Step 1015 is optional.

[0089] In step 1020, the processing module determines thresholds for classifying the reference sample into at least two classes. Step 1020 is optional and applies when using multiple CC prediction models, such as MMLM.

[0090] In step 1030, the processing module calculates the parameters (coefficients ci) of the (multi)CC prediction model from the reference luma value and chroma sample value. Ck Derive ).

[0091] In step 1040, the processing module uses a CC prediction model to derive chroma sample predictions from colocalized (ultimately downsampled) reconstructed luma sample values.

[0092] In Non-Adjacent Cross-Component Prediction (NA-CCP), another variant of CCCM, a CCCM model for the current block can be derived using samples from regions not adjacent to the current block, as described in the document "Non-EE2: Non-Local Cross-Component Prediction" by K. Zhang, L. Zhang, and Z. Deng, JVET-AC0176, 29th Conference, video conference, January 11-20, 2023. A candidate region list containing six candidate regions is constructed by examining potential 8x8 regions in the vicinity of the current block in a specified order. If a examined region is available, it is added to the candidate region list. The top-left position of the potential 8x8 regions is predetermined, as shown in Figure 11. A flag is set indicating whether NA-CCP has been applied to the chroma block. If NA-CCP has been applied, an index is set indicating which candidate in the candidate region list will be used to derive the CCCM model for the current block.

[0093] As shown, in NA-CCP, non-adjacent regions are thought to be more correlated with the chromablock signal of the current block than adjacent regions.

[0094] In History-Based Cross-Component Prediction (H-CCP), another variant of CCLM and CCCM, a table H-CCLM is maintained to store CCLM models of previous blocks encoded according to CCLM mode, and a table H-CCCM is maintained to store CCCM models of previous blocks encoded according to CCCM mode, similar to History-Based Motion Vector Prediction (HMVP) tables. In HMVP, motion information of previously encoded blocks is stored in the tables and used as motion vector prediction candidates for the current CU. The table containing multiple HMVP candidates is maintained during the encoding / decoding process. When a new CTU row is detected, the table is reset (empty). The size of the HMVP table is typically set to "6". When inserting new motion vector candidates into the table, a constrained first-in, first-out (FIFO) rule is used, which applies redundancy checks first to remove duplicate candidates in the HMVP table.

[0095] With regard to H-CCP, after decoding a block encoded in CCLM or CCCM, the CCLM or CCCM model of that block is updated in the corresponding table (H-CCLM table or H-CCCM table). In an example implementation of H-CCP, the size of the H-CCLM table or H-CCCM table is "6". If the current block is encoded in CCLM or CCCM mode, a flag is set to indicate whether H-CCP is applied. If H-CCP is used, an index is further set to indicate which model was selected from the candidate models in the H-CCLM table or H-CCCM table.

[0096] As shown, compared to the method in Figure 10, H-CCP does not require the computation of CCLM and CCCM models for each block encoded in CCLM or CCCM mode. This is equivalent to replacing step 1030 in Figure 10 with a step of selecting a model from a table of H-CCLM or H-CCCM.

[0097] The H-CCP mode has several limitations in interslicing. In fact, since most blocks in an interslicing are coded in intermode, the H-CCLM or H-CCCM tables are rarely updated. As a result, the H-CCLM and H-CCCM tables may contain model parameters that do not correlate well with the chroma signal characteristics of the current block. This can reduce the efficiency of the H-CCP mode.

[0098] Interpretation predicts the pixels of the current block from a block of pixels (called a reference block) in a preceding or succeeding image (called a reference image) of the current image. When encoding the current block according to the interpretation method, in motion estimation step 304, the reference image block closest to the current block is identified according to a similarity criterion. In step 304, a motion vector indicating the position of the reference block in the reference image is determined. This motion vector is used in motion compensation step 305, where a residual block is calculated as the difference between the current block and the reference block. In the first video compression standards, the one-way interpretation mode described above was the only intermode. As video compression standards have evolved, the family of intermodes has expanded significantly and now includes many different intermodes.

[0099] In selection step 306, the encoding module selects a prediction mode from among the tested prediction modes (intra-prediction mode, inter-prediction mode) that optimizes compression performance according to the rate / distortion optimization criterion (i.e., RDO criterion).

[0100] When prediction mode is selected, the residual block is transformed in step 307. The transformed block is then quantized in step 309.

[0101] It should be noted that the encoding module can skip the transformation and apply quantization directly to the untransformed residual signal. If the current block is encoded according to the intra-prediction mode, in step 310, the intra-prediction mode and the transformed and quantized residual block are encoded by the entropy encoder. If the current block is encoded in inter-prediction mode, the motion vector of the block is predicted, if appropriate, from a prediction vector selected from a set of motion vector predictors derived from reconstructed blocks located spatially and temporally in the vicinity of the block being encoded. Next, in step 310, the motion information is encoded by the entropy encoder in the form of an index for identifying the motion residual and the prediction vector. The transformed and quantized residual block is encoded by the entropy encoder in step 310.

[0102] Note that the encoding module can bypass both transformation and quantization; that is, entropy encoding is applied to the residual without applying any transformation or quantization processes. The result of the entropy encoding is inserted into the encoded video stream (i.e., encoded video data) 311.

[0103] Metadata such as SEI (supplemental enhancement information) messages may be attached to the encoded video stream 311. An SEI message is a data container or syntactic structure associated with a video stream, as defined in standards such as AVC, HEVC, or VVC (or the standard generic supplemental enhancement information (VSEI) message for encoded video bitstreams - H.274), and contains metadata that provides information about the video stream.

[0104] After the quantization step 309, the current block is reconstructed so that the pixels corresponding to that block can be used for future predictions. This reconstruction phase is also called the prediction loop. In step 312, inverse quantization is applied to the transformed and quantized residual block, and in step 313, the inverse transform is applied. Depending on the prediction mode of the block obtained in step 314, the predicted block of the block is reconstructed. If the current block is encoded in inter-prediction mode, the encoding module, if necessary, applies motion compensation using the motion vector of the current block in step 316 to identify the reference block of the current block. If the current block is encoded in intra-prediction mode, in step 315, the intra-prediction mode corresponding to the current block is used to reconstruct the predicted block of the current block. The predicted block and the reconstructed residual block are added together to obtain the reconstructed current block.

[0105] After reconstruction, in-loop filtering is applied to the reconstructed blocks in step 317 to mitigate encoding artifacts. This filtering is called "in-loop filtering" because the decoder obtains the same reference image as the encoder and is performed within the prediction loop to avoid drift between the encoding and decoding processes. In-loop filtering tools include deblocking filtering, SAO (Sample Adaptive Offset), and ALF (Adaptive Loop Filtering).

[0106] Once the block is reconstructed, in step 318, the reconstructed image is stored in memory 319() of the reconstructed image, commonly called a decoded image buffer (DPB). The reconstructed image thus stored can then be used as a reference image for other images to be coded.

[0107] Figure 4 schematically illustrates how an encoded video stream 311, encoded according to the method described in relation to Figure 3, is decoded by a decoding module. For example, the decoding method in Figure 4 is performed by system 13. Although variations of this decoding method have been considered, for the sake of clarity of explanation, the decoding method in Figure 4 is described below without describing all anticipated variations.

[0108] Decoding is performed on a block-by-block basis. For the current block, the process begins in step 410 with entropy decoding of the current block. Entropy decoding allows for the acquisition of at least the block's predictive mode.

[0109] If the blocks are encoded according to the interprediction mode, entropy decoding allows obtaining the predicted vector index, motion residual, and residual block where appropriate. In step 408, the motion vector is reconstructed for the current block using the predicted vector index and motion residual.

[0110] If the blocks are encoded according to the intra-prediction mode, entropy decoding allows obtaining the intra-prediction mode and the residual blocks. Steps 412, 413, 414, 415, 416, and 417 implemented by the decode module are identical in all respects to steps 312, 313, 314, 315, 316, and 317 implemented by the encode module.

[0111] The decoded blocks are saved as decoded images, and these decoded images are stored in DPB419 in step 418. When the decoding module decodes a given image, the image stored in DPB419 is the same as the image stored in DPB319 when the encoding module encoded the given image. The decoded images can also be output from the decoding module for display purposes, for example.

[0112] After in-loop filtering (i.e., after the generation of the decoded image), post-processing step 421 may be applied.

[0113] Figures 5A, 5B, and 5C show examples of apparatus, devices, and / or systems for realizing various embodiments.

[0114] Figure 5A schematically shows an example of a hardware architecture for a processing module 500 that can implement either an encoding module that implements the encoding method shown in Figure 3, or a decoding module that implements the decoding method shown in Figure 4. These encoding and decoding modules can implement methods that have been modified depending on different aspects and embodiments. The encoding module is included in system 11, for example, when system 11 is responsible for encoding a video stream. The decoding module is included in system 13, for example.

[0115] The processing module 500 includes, but is not limited to, one or more microprocessors, general-purpose computers, dedicated computers, and processors based on multi-core architectures, a processor or CPU (central processing unit) 5000 connected via a communication bus 5005, random access memory (RAM) 5001, read-only memory (ROM) 5002, and a storage unit 5003 (including non-volatile memory and / or volatile memory, such as electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), and dynamic random access memory (DRA). M) includes static random access memory (SRAM), flash memory, magnetic disk drives, and / or optical disk drives, or storage media readers (e.g., SD (Secure Digital) card readers, and / or hard disk drives (HDDs), and / or network-accessible storage devices), and at least one communication interface 5004 for exchanging data with other modules, devices, or systems. The communication interface 5004 may, but is not limited to, include transceivers configured to send and receive data over a communication channel. The communication interface 5004 may, but is not limited to, include modems or network cards.

[0116] If the processing module 500 implements a decoding module, the communication interface 5004 enables, for example, the processing module 500 to receive an encoded video stream (i.e., video data) and provide a sequence of decoded images. If the processing module 500 implements an encoding module, the communication interface 5004 enables, for example, the processing module 500 to receive a sequence of original image data for encoding and provide an encoded video stream.

[0117] The processor 5000 has the ability to execute instructions loaded from ROM 5002 to RAM 5001 from external memory (not shown), a storage medium, or a communication network. When the processor 5000 is powered on, the processor 5000 has the ability to read and execute instructions from RAM 5001. These instructions form a computer program that causes the processor 5000 to implement, for example, the decoding method described in relation to Figure 14 or the encoding method described in relation to Figure 13, and these methods include various aspects and embodiments described later in this document.

[0118] The algorithms and procedures of the methods shown in Figure 13 or 14, in whole or in part, are implemented in software form by the execution of a series of instructions by a programmable machine such as a DSP (Digital Signal Processor) or microcontroller, or in hardware form by a machine or dedicated component such as an FPGA (Field Programmable Gate Array) or ASIC (Application-Specific Integrated Circuit).

[0119] As shown, microprocessors, general-purpose computers, dedicated computers, processors whether or not they are based on a multicore architecture, DSPs, microcontrollers, FPGAs, and ASICs are electronic circuits adapted or configured to implement at least some of the methods shown in Figure 13 or 14.

[0120] Figure 5C is a block diagram showing an example of System 13, in which various aspects and embodiments are implemented. System 13 can be realized as a device including the various components described below and configured to perform one or more aspects and embodiments described herein. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptops, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and head-mounted displays. The elements of System 13 can be embodied individually or in combination in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, System 13 includes one processing module 500 that implements a decoding module. In various embodiments, System 13 is communicably connected to one or more other systems or other electronic devices, for example, via a communication bus or dedicated input / output ports. In various embodiments, System 13 is configured to implement one or more functions described herein.

[0121] Inputs to the processing module 500 can be provided through various input modules, as shown in block 531. Such input modules include, but are not limited to, (i) a high-frequency (RF) module for receiving RF signals transmitted, for example, by broadcasting by a broadcasting station; (ii) a component (COMP) input module (or a set of multiple COMP input modules); (iii) a universal serial bus (USB) input module; and / or (iv) a high-resolution multimedia interface (HDMI) input module. Other examples not shown in Figure 5C include composite video.

[0122] In various embodiments, the input module of block 531 is associated with each of the input processing elements known in the prior art. For example, the RF module may be associated with elements suitable for the purposes of (i) selecting a predetermined frequency (also called signal selection, or band-limiting a signal to a specific frequency band), (ii) down-converting the selected signal, (iii) re-band-limiting to a narrower frequency band (e.g., selection of a signal frequency band which may be called a channel in a particular embodiment), (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing for selecting a data packet stream of interest. The RF module in various embodiments includes one or more elements for performing these functions. For example, frequency selectors, signal selectors, band-limiters, channel selectors, filters, down-converters, demodulators, error correctors, and demultiplexers. The RF portion may include a tuner that performs several of these functions, such as down-converting a received signal to a lower frequency (e.g., an intermediate frequency or quasi-baseband frequency) or baseband. In one embodiment of a set-top box, an RF module and associated input processing elements receive an RF signal transmitted via a wired (e.g., cable) medium and perform frequency selection to a desired frequency band by filtering, down-converting, and re-filtering. In various embodiments, the order of the above (and other) elements may be rearranged, some of these elements may be removed, or other elements performing similar or different functions may be added. Adding elements may include inserting elements between existing elements, such as inserting amplifiers or analog-to-digital converters. In various embodiments, the RF module includes an antenna.

[0123] Furthermore, the USB and / or HDMI modules may include their respective interface processors for connecting the system 13 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of input processing, such as Reed-Solomon error correction, can be implemented as needed, for example, within a separate input processing IC or within the processing module 500. Similarly, various aspects of USB or HDMI interface processing can be implemented as needed within a separate interface IC or within the processing module 500. The demodulated, error-corrected, and demultiplexed stream is supplied to the processing module 500.

[0124] Various components of system 13 can be housed within an integrated housing. Within the integrated housing, the various components can be interconnected using appropriate means of connection, such as internal buses known in the art (including Inter-IC (I2C) buses), wiring, and printed circuit boards, and data can be transmitted between them. For example, in system 13, processing module 500 is interconnected with other components of system 13 by bus 5005.

[0125] The communication interface 5004 of the processing module 500 enables the system 13 to communicate over the communication channel 12. As previously mentioned, the communication channel 12 can be implemented, for example, in a wired and / or wireless medium.

[0126] In various embodiments, the data is streamed to the system 13 or otherwise provided using a wireless network, such as a Wi-Fi network, including, for example, IEEE 802.11 (IEEE stands for Institute of Electrical and Electronics Engineers). In these embodiments, the Wi-Fi signal is received via a Wi-Fi-compatible communication channel 12 and communication interface 5004. In these embodiments, the communication channel 12 is typically connected to an access point or router that provides access to an external network, including the Internet, to enable streaming applications and other OTT communications. In other embodiments, streaming data is provided to the system 13 using the RF connection of input block 531. As mentioned above, various embodiments provide data in a non-streaming manner. Furthermore, various embodiments use wireless networks other than Wi-Fi (e.g., cellular networks or Bluetooth networks).

[0127] System 13 can provide output signals to various output devices, including a display system 15, speakers 535, and other peripherals 536. In various embodiments, the display system 15 includes, for example, one or more of a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display system 15 may be for a television, tablet, laptop, mobile phone, head-mounted display, or other device. The display system 15 may be integrated with other components (e.g., in a smartphone) or separate (e.g., an external monitor for a laptop). In various embodiments, the other peripherals 536 include, in various embodiments, one or more of a standalone digital video disc (or digital versatile disc) (both terms DVR), a disc player, a stereo system, and / or a lighting system. In various embodiments, one or more peripherals 536 are used that provide functionality based on the output of System 13. For example, a disc player performs the output playback function of System 13.

[0128] In various embodiments, control signals are transmitted between the system 13 and the display system 15, speaker 535, or other peripheral devices 536 using signal transmission such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable inter-device control with or without user intervention. Output devices are coupled to the system 13 for communication via dedicated connections through interfaces 532, 533, and 534. Alternatively, output devices are connected to the system 13 using communication channel 12 via communication interface 5004, or via a dedicated communication channel corresponding to communication channel 12 in Figure 5C using communication interface 5004. The display system 15 and speaker 535 can be integrated into a single unit with other components of the system 13 in an electronic device such as a television. In various embodiments, the display interface 532 includes a display driver, such as a timing controller (TCon) chip.

[0129] The display system 15 and speaker 535 can, alternatively, be isolated from one or more other components. In various embodiments where the display system 15 and speaker 535 are external components, the output signal can be provided via a dedicated output connection such as an HDMI port, a USB port, or a COMP output.

[0130] Figure 5B is a block diagram showing an example of System 11 in which various aspects and embodiments are implemented. System 11 is very similar to System 13. System 11 is embodied as a device including various components described below and is configured to perform one or more aspects and embodiments described herein. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, cameras, and servers. The elements of System 11 can be embodied individually or in combination as a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, System 11 includes one processing module 500 that implements an encoding module. In various embodiments, System 11 is communicably connected to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various embodiments, System 11 is configured to implement one or more aspects described herein.

[0131] Inputs to the processing module 500 can be provided through various input modules, as shown in block 531, which has already been described in relation to Figure 5C.

[0132] Various elements of system 11 can be provided within an integrated housing. Within the integrated housing, the elements are interconnected and can transmit data to each other using appropriate means of connection (e.g., internal buses known in the art (including Inter-IC (I2C) buses), wires, printed circuit boards, etc.). For example, in system 11, processing module 500 is interconnected with other components of system 11 by bus 5005.

[0133] The communication interface 5004 of the processing module 500 enables the system 11 to communicate on the communication channel 12.

[0134] In various embodiments, the data is streamed to the system 11 using a wireless network, such as a Wi-Fi network like IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers), or otherwise provided. In these embodiments, the Wi-Fi signal is received via a communication channel 12 and a communication interface 5004 adapted for Wi-Fi communication. In these embodiments, the communication channel 12 is typically connected to an access point or router that provides access to an external network, including the Internet, enabling streaming applications and other OTT communications. In other embodiments, the RF connection of the input block 531 is used to provide streaming data to the system 11.

[0135] As described above, various embodiments provide data in a non-streaming manner. Furthermore, various embodiments use wireless networks other than Wi-Fi, such as cellular networks or Bluetooth networks.

[0136] The data provided to system 11 can be provided in different formats. In various embodiments, this data is encoded and conforms to known video compression formats such as AV1, VP9, ​​VVC, HEVC, and AVC. In various embodiments, this data is raw data provided, for example, by an image and / or audio acquisition module connected to or incorporated into system 11. In this case, the processing module 500 is responsible for encoding this data.

[0137] System 11 can provide output signals to various output devices, such as System 13, that can store and / or decode output signals.

[0138] Various embodiments include decoding. In this application, “decoding” encompasses all or part of the steps performed on, for example, a received encoded video stream to produce a final output suitable for display. In various embodiments, such steps include one or more steps typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, prediction, etc. In various embodiments, these processes additionally or alternatively include processes performed by the decoders of the various embodiments described herein (e.g., processes for applying CC coding tools (CCLM, MMLM, CCCM, or variations of these coding tools described herein)).

[0139] Whether the expression "decoding process" refers to a subset of specific operations or to a broader category of decoding processes in general becomes clear from the context of the specific description, and it is assumed that those skilled in the art will fully understand this.

[0140] Various implementations include encoding. As with the discussion of “decoding” above, “encoding” as used in this application may encompass all or part of the processing performed on, for example, an input video sequence to generate an encoded video stream. In various embodiments, such processing includes one or more embodiments of processing typically performed by an encoder, such as splitting, prediction, transformation, quantization, and entropy encoding. In various embodiments, these processing may additionally or alternatively include processing performed by the encoders of the various embodiments described herein, such as processing for applying CC coding tools (e.g., CCLM, MMLM, CCCM, or any variation of these coding tools described herein).

[0141] Whether the expression "encoding process" refers to a subset of specific operations or to a broader range of encoding processes in general becomes clear from the context of the specific description and is considered to be well understood by those skilled in the art.

[0142] Please note that the syntactic element names used herein are descriptive terms; therefore, they do not preclude the use of other syntactic element names.

[0143] When a diagram is presented as a flowchart, it should be understood that a corresponding block diagram of the device is also provided. Similarly, when a diagram is presented as a block diagram, it should be understood that a corresponding flowchart of the method / process is also provided.

[0144] Various embodiments refer to rate-distortion optimization. In particular, a balance or trade-off between rate and distortion is usually considered during the encoding process. Rate-distortion optimization is typically formulated to minimize a rate-distortion function, which is a weighted sum of rate and distortion. Various approaches exist to solve the rate-distortion optimization problem. For example, one method involves comprehensively testing all encoding options, including all modes or coding parameter values ​​to be considered, and fully evaluating the coding cost and the associated distortion of the reconstructed signal after coding and decoding. Faster methods are also used to reduce the complexity of encoding. In particular, this involves calculating approximate distortion based on the predicted signal or predicted residual signal rather than the reconstructed signal. A mixture of these two methods can also be used, for example, by using approximate distortion for some encoding options and full distortion evaluation for others. Other methods evaluate only a subset of the possible encoding options. More generally, there are many methods that employ various techniques to perform optimization, but these optimizations do not necessarily fully evaluate both the coding cost and the associated distortion.

[0145] The embodiments and aspects described herein can be implemented, for example, as methods or processes, apparatus, software programs, data streams, or signals. Even when discussed in the context of a single embodiment (for example, when discussed only as a method), embodiments of the discussed features can be implemented in other forms (for example, apparatus or programs). Apparatus can be implemented, for example, with appropriate hardware, software, and firmware. Methods can be implemented, for example, with a processor, which generally refers to a processing device, including, for example, a computer, microprocessor, integrated circuit, or programmable logic device. Processors include communication devices that enable information communication between end users (for example, computers, mobile phones, portable / personal digital assistants (PDAs), and other devices).

[0146] References to "one embodiment," "embodiment," "one example," "example," and other variations of the expression mean that the specific features, structures, characteristics, etc. described in relation to that embodiment are included in at least one embodiment. Therefore, "in one embodiment," "in one example," "in one example," and other variations appearing in various parts of this application do not necessarily all refer to the same embodiment.

[0147] Furthermore, this application may refer to "determining" various types of information. Determining information can include one or more methods, such as estimating information, calculating information, predicting information, retrieving information from memory, or retrieving information from other devices, modules, or users.

[0148] Furthermore, this application may refer to "accessing" various types of information. Accessing information may include one or more actions such as receiving information, retrieving information (e.g., retrieving from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.

[0149] Furthermore, this application may refer to "receiving" various types of information. "Receiving," like "accessing," is intended as a broad term. Receiving information can include one or more actions such as accessing or retrieving information (e.g., retrieving from memory). Moreover, actions such as storing, processing, transmitting, moving, copying, erasing, calculating, determining, predicting, and estimating information usually involve "receiving" in some form.

[0150] Expressions such as " / ", "and / or", and "at least one of A", for example, "one or more of A", "one or more of B", "A / B", "A and / or B", "at least one of A", "at least one of A and B", and "one or more of A and B" are intended to include selections of only the first listed option (A), only the second listed option (B), or both options (A and B). To give further examples, the expressions "A, B, and / or C," "at least one of A, B, and C," and "one or more of A, B, and C" are intended to encompass the selection of only the first listed option (A), only the second option (B), only the third listed option (C), only the first and second listed options (A and B), only the first and third listed options (A and C), only the second and third listed options (B and C), or all three options (A, B, and C). This can be expanded depending on the number of items listed, as would be obvious to anyone with the usual skills in this and related fields.

[0151] Furthermore, in this specification, the term "signal" refers, in particular, to indicating something to a corresponding decoder. For example, in certain embodiments, an encoder signals the use of some coding tool. In this way, in certain embodiments, the same parameters can be used on both the encoder and decoder sides. Therefore, for example, an encoder can transmit a specific parameter to a decoder (explicit signaling) so that the decoder can use the same specific parameter. Conversely, if the decoder already holds that specific parameter or other parameters, signaling without transmission (implicit signaling) can be used to simply allow the decoder to recognize and select that specific parameter. Bit saving is achieved in various embodiments by not transmitting any actual function. Note that signaling can be implemented in various ways. For example, one or more syntactic elements, flags, etc., are used to transmit information to a corresponding decoder. The above description pertains to the verb form "signal," but in this specification, "signal" can also be used as a noun.

[0152] As those skilled in the art will understand, the embodiments can generate various signals formatted for transmitting, for example, information that can be stored or transmitted. The information may include, for example, instructions for performing a method or data generated by any of the embodiments described. For example, the signals may include signals indicating how to apply a CC coding tool. Such signals may be formatted, for example, as electromagnetic waves (e.g., using the radio frequency band of the spectrum) or as baseband signals. The format may include, for example, encoding of a video stream to be encoded or modulation of a carrier wave by a video stream to be encoded. The information transmitted by the signals may be, for example, analog or digital information. The signals may be transmitted over various wires or wireless links, as is well known. The signals may be stored on a processor-readable medium.

[0153] Various embodiments of the H-CCP mode and NA-CCP mode are proposed below.

[0154] In the first embodiment, the parameters of the CCLM and CCCM models are associated with the interconnected block.

[0155] In some implementations, an image can be associated with a buffer, which we will refer to below as a Predictive Mode (PM) buffer. The PM buffer allows for the storage of some of the coding parameters for the associated image block. This buffer is stored in DPB 319 or 419 along with the associated image. In this case, the reference image in the DPB is associated with the PM buffer. The PM buffer can be thought of as a grid of cells of a predetermined size (e.g., 4x4). The cells of the PM buffer store the coding parameters for the associated image block that covers that cell. For example, a 16x16 block covers "16" 4x4 cells, and each of these "16" 4x4 cells stores the coding parameters for the corresponding 16x16 block.

[0156] In this way, coding parameters of previously coded blocks can be easily accessed in the coding / decoding processes of other blocks of related images or subsequent images. For example, coding parameters include information representing the block's intra / intermode, the block's motion vector, and the picture order count (POC) of the reference image used for inter-prediction of the block.

[0157] For a block of the current image coded in intermode, an operation called spanInfo causes the intercoded block to inherit the coding parameters of the reference block used for interpretation of that intercoded block. More precisely, the PM buffer cell associated with the current image corresponding to the intercoded block inherits the coding parameters stored in the cell corresponding to the reference block in the PM buffer associated with the reference image containing the reference block.

[0158] Another process, called storeInfo, allows the coding parameters of the current block to be stored in the corresponding cell within the PM buffer associated with the current image.

[0159] Figure 12 shows an example of the application of spanInfo processing.

[0160] Figure 12 shows three images P0, P1, and P2. Image P0 (and images P1 and P2 respectively) is associated with PM buffer PM0 (and images PM1 and PM2 respectively).

[0161] Block B0 of image P0 is encoded in intra-mode. The coding parameters of block B0 are stored in cell C0 of PM buffer PM0. Block B1 of image P1 is intercoded using block B0 as a reference block (block B0 is referenced by block B1's motion vector MV1). Block B1 is associated with cell C1 of PM buffer PM1. Cell C1 inherits the coding parameters stored in cell C0 of PM buffer PM0 (i.e., the coding parameters of block B0). Block B2 of image P2 is intercoded using block B1 as a reference block (block B1 is referenced by block B2's motion vector MV2). Block B2 is associated with cell C2 of PM buffer PM2. Cell C2 inherits the coding parameters stored in cell C1 of PM buffer PM1 (i.e., the coding parameters of block B0).

[0162] The spanInfo process is called before encoding / decoding the current block being encoded in the interframe, using the block's motion information (i.e., motion vectors and reference image indices). The storeInfo process, on the other hand, is called after encoding / decoding the current block. Typically, for B1 (and B2 respectively), the spanInfo process is applied immediately before encoding / decoding block B1 (and B2 respectively). This ensures that cell C1 (and C2 respectively) inherits parameters stored in cell C0 (and C1 respectively) that may be used when encoding B1 (and B2 respectively).

[0163] Generally, the boundaries of a reference block do not coincide with the boundaries of the encoded blocks defined by the division of the reference image, and may span multiple encoded blocks of the reference image. In this case, the spanInfo process uses a cell in the reference image corresponding to a predetermined position within the reference block (e.g., the center of the reference block). For bi-predictive interblocks, a specific inheritance process is also applied to determine (i.e., inherit) the motion vectors and reference image indices to use.

[0164] In the first embodiment, it is proposed to modify the PM buffer to enable the storage of CCCM and CCLM model parameters, or to manage a separate PM buffer for storing CCCM and CCLM models in the same way as a normal PM buffer. Such a modified PM buffer allows spanInfo processing to enable cells corresponding to intercode blocks to inherit CCCM or CCLM models from other cells. Thus, cells in the PM buffer corresponding to an interblock can store CCCM or CCLM models. If the current block of the current frame is coded in CCLM or CCLM mode, storeInfo processing is used to store the CCLM or CCLM model in the cell corresponding to that block in the PM buffer associated with the current frame.

[0165] This increases the update frequency of the H-CCLM and H-CCCM tables when applying the H-CCP mode to the current block in an interslice. In fact, the number of blocks associated with a CCLM or CCCM model is not limited to blocks actually encoded in CCLM or CCCM mode; any type of block can be associated with a CCLM or CCCM model. Furthermore, since the H-CCLM and H-CCCM tables are reset when a new CTU row is detected, the likelihood of finding a block associated with a CCLM or CCCM model in the current CTU row of the interslice increases. Because some blocks in a CTU row are not encoded using CCLM or CCCM mode, but rather are inter-predicted directly or indirectly from blocks encoded using CCCM or CCLM mode, it can be considered that the signals used to determine the CCLM or CCCM model are likely correlated with the chroma signal of the current block.

[0166] Similarly, if the current block inherits information from its neighboring location (1501) within an intercoded adjacent block, the spanInfo process can be invoked, as shown in Figure 15, to use an encoded parameter stored in a PM buffer associated with at least one reference block, which is used to predict the adjacent block at its corresponding location (1502) within the reference block. If adjacent blocks are predicted in both directions, predefined rules may be used to select the reference block. For example, the reference block that is the closest to the Picture Order Count (POC) of the current image might be used.

[0167] For all blocks coded in the interface, the spanInfo operation can be called to copy the CC model parameters stored in the reference PM buffer to the current PM buffer and populate the current PM buffer.

[0168] Figure 13 schematically shows a modified example of a method for encoding video data according to one embodiment.

[0169] Compared to the method in Figure 3, the method in Figure 13 includes new steps 1301 and 1302, and step 315 is replaced by step 1300. All additional steps are performed, for example, by the processing module 500 of system 11.

[0170] Step 1300 is identical to step 315, except that an updated H-CCLM (or H-CCCM) table, according to the first embodiment, is used to determine the CCLM (or CCCM) model for the current block in response to the application of the H-CCP mode to the current block. Normally, when the H-CCP mode is applied to the current block, the CCLM (or CCCM) model applied to the current block is obtained from the CCLM (or CCCM) model associated with a block encoded before the current block. However, in many cases in inter-slices, the block from which the CCLM (or CCCM) model is obtained is encoded according to a mode different from the CCLM (or CCCM) encoding mode, namely the inter-mode. In practice, the H-CCLM and H-CCCM tables are filled with cells in the PM buffer, which mainly correspond to the inter-blocks.

[0171] If the current block is encoded according to H-CCP mode, in step 1301 the CCLM (or CCCM) model used for the current block is stored (using the storeInfo process) in a cell (or more cells) of the PM buffer associated with the current image corresponding to the current block.

[0172] In step 1302, the spanInfo processing according to the first embodiment is applied to the current block, depending on whether the current block is encoded in intermode. When the spanInfo processing is applied, the cell corresponding to the current block in the PM buffer associated with the current image (referred to as the current cell) inherits the coding parameters stored in the cell corresponding to the reference block specified by the motion information of the current block in the PM buffer associated with the reference image (referred to as the target cell). If the coding parameters include a CCLM (or CCCM) model, that model is also inherited. Therefore, the CCLM (or CCCM) model of the target cell is copied to the current cell.

[0173] Figure 14 schematically shows a method for decoding encoded video data according to one embodiment.

[0174] Compared to the method in Figure 4, the method in Figure 14 includes new steps 1401 and 1402, and step 415 is replaced by step 1400. All additional steps are performed, for example, by the processing module 500 of system 13.

[0175] Steps 1400, 1401, 1402, and 1403 are identical to steps 1300, 1301, 1302, and 1303, respectively.

[0176] If the current block is interpredicted directly or indirectly from a block encoded using CCCM or CCLM mode, the assumption that the signal used to determine the CCLM (or CCCM) model is likely to correlate with the chroma signal of the current block is valid as long as the prediction error that occurs during interpretation is small.

[0177] In a modified version of the first embodiment, the current cell inherits the CCLM (or CCCM) model of the target cell in steps 1302 and 1402 only if the inter-prediction error of the current block is low. For example, the current block inherits the CCLM (or CCCM) model in step 1302 under the following conditions:

[0178]

number

[0179] Here, DC curr is the value of the DC coefficient of the reconstruction residual of the current block, QP is the quantization parameter of the current block, and TH1 is a predefined threshold.

[0180] In another variation of the first embodiment, in steps 1302 and 1402, the current cell inherits the CCLM (or CCCM) model of the target cell only if the number of consecutive spanInfo applications that enable the storage of the CCLM (or CCCM) model within the target cell is less than a predefined threshold TH2.

[0181] DC curr The number of consecutive spanInfo applications that enable the ×QP value and the CCLM (or CCCM) model to be stored in the target cell can be considered as values ​​that represent the quality of the CCLM (or CCCM) model inherited between the current cell and the target cell.

[0182] In the second embodiment, a CCLM model or a CCCM model, or both, are computed for all or some of the reconstructed blocks predicted using a prediction mode different from the CCLM mode or CCCM mode (i.e., using intermode or intramode without using CCLM mode or CCCM mode).

[0183] For example, regardless of the actual mode of the reconstructed block (inter, intra, with or without CCLM, or with or without CCCM), a CCLM model, a CCCM model, or both are calculated for the reconstructed block. Each calculated model is stored in the cell corresponding to the block in the PM buffer associated with the current image using the storeInfo process.

[0184] In this second embodiment, when the NA-CCP mode is applied to the current block, the CCCM (or CCLM) model is already computed for all blocks, and therefore the CCCM (or CCLM) model is available for all blocks in the vicinity of the current block. In the first modification, the candidate region list is replaced with a candidate block list. A flag is provided indicating whether NA-CCP is applied to the chroma blocks of the current block. If NA-CCP is applied, an index is provided indicating which candidate blocks in the candidate block list provide the CCCM (or CCLM) model for the current block.

[0185] In the second variation, a list of candidate regions is maintained. However, in some cases, multiple blocks may be contained within a single region. In that case, the CCCM (or CCLM) model of the block containing the region's predetermined (e.g., top-left) pixel position is considered the CCCM (or CCLM) model of the region. Similarly, a block may at least partially cover multiple regions. In this case as well, the CCCM (or CCLM) model of the block containing the region's top-left pixel is considered the CCCM (or CCLM) model of that region.

[0186] Figure 13 shows an implementation example of the second embodiment in NA-CCP mode, which is represented by inserting step 1303 in addition to steps 1300 and 1301 of the method in Figure 3. In this embodiment, step 1302 is not applied. In step 1303, the processing module 500 of system 11 calculates a CCCM (or CCLM) model for the current block as needed. For example, in step 1303, a CCCM (or CCLM) model is calculated for each block that does not use the CCCM (or CCLM) mode for inter-slice, both between blocks and within each block. Each calculated CCCM (or CCLM) model is stored in a cell of the PM buffer associated with the current image corresponding to the current block.

[0187] Figure 14 shows an implementation example of the second embodiment in NA-CCP mode, which is represented by adding step 1403 to steps 1400 and 1401 in addition to the method in Figure 4. In this embodiment, step 1402 is not applied. Step 1403 is the same as step 1303.

[0188] When applying NA-CCP mode to the current block, the CCCM (or CCLM) model applied to that block is obtained from the CCCM (or CCLM) model associated with a block encoded / decoded before the current block. However, in interslicing, the majority of blocks from which the CCCM (or CCLM) model is obtained are encoded in a mode different from CCCM (or CCLM) mode, namely intermode or intramode (without using CCCM (or CCLM) mode). In fact, the blocks in the candidate block list were encoded in intermode or intramode without using CCCM (or CCLM) mode.

[0189] In a modified version of the second embodiment, when applying the NA-CCP mode, to avoid calculating the CCCM (or CCLM) model for each block within the interslice, the CCCM (or CCLM) model is calculated only for a subset of the blocks in the interslice, and it is ensured that each block in the interslice has at least one block in its candidate block list that is associated with a cell in the PM buffer containing the CCCM (or CCLM) model. For example, if the candidate block list consists of "6" blocks, the CCCM (or CCLM) model is calculated each time the entropy coding module reconstructs the "6" blocks.

[0190] Another variation avoids calculating the CCCM (or CCLM) model for each block, instead pre-defining the frequency of CCCM or CCLM model calculations. For example, calculations are performed at predetermined locations within the image, after reconstructing a predetermined number of pixels, or after reconstructing a block of a predetermined size.

[0191] In the second embodiment, when applied to H-CCP mode, the CCLM (or CCCM, or both) model is calculated for the interblock in the interslice. This updates the H-CCLM table and the H-CCCM table even if CCLM (or CCCM) mode is not used in the interslice.

[0192] Figure 13 shows an implementation example of the second embodiment in H-CCP mode, which is represented by inserting step 1303 in addition to steps 1300 and 1301 of the method in Figure 3. In this embodiment, step 1302 is not applied. In step 1303, the processing module 500 of system 11 calculates the CCLM (or CCCM, or both) model of the reconstructed block as needed (for example, if the reconstructed block has not yet been encoded according to CCLM or CCCM mode). For example, in step 1303, the CCLM (or CCCM, or both) model is calculated for each interblock and each intrablock (those that do not use the CCLM (or CCCM) mode of the interslice). After calculating the CCLM (or CCCM, or both) model of the reconstructed block, the corresponding table (H-CCLM table or H-CCCM table) is updated with the CCLM (or CCCM) model of the current block. In step 1300, if the current block is coded in CCLM (or CCCM) mode, a flag is set indicating whether H-CCP is applied. If H-CCP is used, an index is further set indicating which candidate model in the H-CCLM table or H-CCCM table was selected.

[0193] Figure 14 shows an implementation example of the second embodiment in H-CCP mode, which is represented by inserting step 1403 in addition to steps 1400 and 1401 of the method in Figure 4. In this embodiment, step 1402 is not applied. Step 1403 is identical to step 1303. In step 1400, if the current block is encoded in CCLM (or CCCM) mode, a flag indicating whether H-CCP is applied to the block is decoded. If H-CCP is used, an index indicating which candidate model in the H-CCLM table or H-CCCM table is used is decoded.

[0194] Therefore, when applying NA-CCP mode to the current block in steps 1300 and 1400, the CCCM model applied to the current block is obtained from the CCCM model associated with a block encoded / decoded before the current block. However, in inter-slice, in most cases, the block from which the CCCM model is obtained is encoded according to a mode different from the CCCM coding mode, namely inter-mode or intra-mode (without using CCCM mode). In fact, the models in the H-CCLM table or H-CCCM table are associated with blocks encoded in inter-mode or intra-mode, which do not use CCLM mode or CCCM mode.

[0195] In a modified version of the second embodiment, if the CCLM (or CCCM) model is not calculated for each interblock or intrablock that does not use CCLM (or CCCM) mode, the encoding module (or decoding module) applies step 1302 (or 1402). For example, in this modified version, the model is calculated only for interblocks that inherit the CCLM (or CCCM) model from the interblock through spanInfo processing. The model is not calculated for interblocks that inherit the CCLM (or CCCM) model from an intrablock that uses CCLM (or CCCM) mode through spanInfo processing.

[0196] In the example in Figure 12, block B1 inherits the model from the intrablock, so no CCLM (or CCCM) model is calculated for block B1. However, block B2 inherits the CCLM (or CCCM) model from interblock B1 through spanInfo processing, so a new CCLM (or CCCM) model is calculated for block B2.

[0197] In another embodiment, the cell size of the PM buffer grid used to store CCCM and CCLM models differs from that of a normal PM buffer used to store intra-prediction modes or motion information. For example, the PM buffer used to store intra-prediction modes or motion information is 4x4, while the cell size of the PM buffer grid used to store CCCM and CCLM models is 8x8. Increasing the cell size reduces the amount of internal memory required, while decreasing the cell size improves accuracy and increases the number of potential CC model candidates.

[0198] In one variation, the cell size may differ from frame to frame. For example, less memory (larger cell size) may be allocated to certain slices or images. The selection / derivation of the cell size can be done as a function of the frame's time ID.

[0199] In another embodiment, the parameter precision of the CC model may be reduced to conserve internal memory. For example, 64 bits may be used for parameter derivation of the CC model, while 32 bits may be used for storage in the PM buffer.

[0200] In another embodiment, the CCCM and CCLM models are stored in a lookup table (LUT), and the PM buffer stores the index pointing to the LUT (Figure 15). In this way, the CCCM and CCLM models are not duplicated within the grid, and each cell stores only a single index. One LUT is associated with each image. The spanInfo processing can be modified by inheriting and duplicating the index instead of directly inheriting and duplicating the CCCM and CCLM model parameters. In a variation, for an inter-coded image or slice, the process involves converting the index of the reference image to a new index for the current image, and updating the current LUT using the CCCM and CCLM models obtained from the reference image's LUT.

[0201] For all blocks coded in the interface, the spanInfo process can be called to update the current LUT with the model stored in the reference LUT, and the current PM buffer can be populated with the new index converted from the index in the reference PM buffer.

[0202] In one variation, the size of the LUT is limited to a predefined or notified value, maxLUT. When the size of the LUT is maxLUT, no CCCM or CCLM model parameters beyond that are stored in or referenced in the LUT.

[0203] Several embodiments have been described above. Features of these embodiments can be provided individually or in any combination. Furthermore, embodiments may include, individually or in any combination, one or more of the following features, apparatus, or aspects across various categories and types of claims.

[0204] ● A bitstream or signal containing one or more of the described syntactic elements, or variations thereof. ● Creating, transmitting, receiving, and / or decoding bitstreams or signals containing the described syntactic elements or their variations. ● A television, set-top box, mobile phone, tablet, or other electronic device that performs at least one of the embodiments described. ● A television, set-top box, mobile phone, tablet, or other electronic device that performs at least one of the embodiments described and displays the resulting image (e.g., using a monitor, screen, or other type of display). ● A television, set-top box, mobile phone, tablet, or other electronic device that tunes a channel (e.g., using a tuner) to receive a signal containing an encoded video stream and performs at least one of the embodiments described. ● A television, set-top box, mobile phone, tablet, or other electronic device that broadcasts (for example, using an antenna) a signal containing an encoded video stream and performs at least one of the embodiments described. ● A server, camera, mobile phone, tablet, or other electronic device that transmits a signal via broadcast (e.g., using an antenna) and includes a video stream encoded in that signal, and performs at least one of the embodiments described. ● A server, camera, mobile phone, tablet, or other electronic device that transmits a signal containing a video stream encoded by tuning a channel (e.g., using a tuner) and performs at least one of the embodiments described.

Claims

1. It is a method, The process involves obtaining a first block for reconstruction using a cross-component coding mode, wherein the model of the cross-component coding mode to be applied to reconstruct the first block is obtained from the model of the cross-component coding mode associated with the reconstructed second block, and the second block is reconstructed using a mode different from the cross-component coding mode. A method for providing this.

2. It is a method, Applying a cross-component coding mode to a first block, wherein the model of the cross-component coding mode for application to the first block is obtained from the model of the cross-component coding mode associated with a second block encoded before the first block, and the second block was encoded using a mode different from the cross-component coding mode. A method for providing this.

3. The method according to claim 1 or 2, wherein the model of the cross-component coding mode associated with the reconstructed second block is stored in at least one cell corresponding to the second block of a first buffer that stores coding parameters for the current image block comprising the first and second blocks.

4. The method according to claim 3, wherein the cell of at least one cell inherits a model of the cross-component coding mode associated with the reconstructed second block from another cell corresponding to a reference block of a reference image specified by the motion information of the second block (1302, 1402), and the other cell is provided in a second buffer for storing coding parameters of the block of the reference image.

5. The method according to claim 4, wherein the cell of at least one cell inherits from another cell the model of the cross-component coding mode associated with the reconfigured second block, depending on a value representing the quality of the model of the cross-component coding mode inherited from the second block by the first block.

6. The method according to any one of claims 1 to 5, wherein the model of the cross-component coding mode for application to the first block is selected from a table storing the models of the cross-component coding mode for the last reconfigured block for which the models of the cross-component coding mode are available, and the table is updated after the reconfiguration of the block for which the models of the cross-component coding mode are available.

7. The method according to any one of claims 1 to 4, wherein the model of the cross-component coding mode for application to the first block is selected from the model of the cross-component coding mode of a candidate region list or a candidate block list, and the regions of the candidate region list and the blocks of the candidate block list are located in the vicinity of the first block.

8. The method according to any one of claims 1 to 7, wherein the model for the cross-component coding mode is calculated for a reconstructed block predicted using a different mode than the cross-component coding (1303, 1403).

9. A method for decoding a current image, comprising reconstructing the current block of the current image in a cross-component coding mode by applying the method according to claim 1 or any one of claims 3 to 8.

10. A method for encoding a current image, comprising reconstructing the current block of the current image in a cross-component coding mode by applying the method according to any one of claims 2 to 8.

11. The method according to claim 9 or 10, wherein information representing the model of the cross-component coding mode applied to reconstruct the first block is stored in at least one cell corresponding to the current block in the current buffer that stores coding parameters associated with the current image (1301, 1401).

12. It is a device, The process involves obtaining a first block for reconstruction using a cross-component coding mode, wherein the model of the cross-component coding mode to be applied to reconstruct the first block is obtained from the model of the cross-component coding mode associated with the reconstructed second block, and the second block is reconstructed using a mode different from the cross-component coding mode. A device equipped with an electrical circuit configured as follows.

13. It is a device, Applying a cross-component coding mode to a first block, wherein the model of the cross-component coding mode for application to the first block is obtained from the model of the cross-component coding mode associated with a second block encoded before the first block, and the second block was encoded using a mode different from the cross-component coding mode. A device equipped with an electronic circuit consisting of such a configuration.

14. The apparatus according to claim 12 or 13, wherein the model of the cross-component coding mode associated with the reconstructed second block is stored in at least one cell corresponding to the second block of a first buffer that stores coding parameters for the current image block comprising the first and second blocks.

15. The apparatus according to claim 14, wherein the cell of at least one cell inherits a model of the cross-component coding mode associated with the reconstructed second block from another cell corresponding to a reference block of a reference image specified by the motion information of the second block (1302, 1402), and the other cell is provided in a second buffer for storing coding parameters of the block of the reference image.

16. The apparatus according to claim 15, wherein the cell of at least one cell inherits from another cell the model of the cross-component coding mode associated with the reconfigured second block, depending on a value representing the quality of the model of the cross-component coding mode inherited from the second block by the first block.

17. The apparatus according to any one of claims 12 to 16, wherein the model of the cross-component coding mode for application to the first block is selected from a table storing the models of the cross-component coding mode for the last reconfigured block for which the models of the cross-component coding mode are available, and the table is updated after the reconfiguration of the block for which the models of the cross-component coding mode are available.

18. The apparatus according to any one of claims 12 to 16, wherein the model of the cross-component coding mode for application to the first block is selected from the model of the cross-component coding mode of a candidate region list or a candidate block list, and the regions of the candidate region list and the blocks of the candidate block list are located in the vicinity of the first block.

19. The apparatus according to any one of claims 12 to 18, wherein the model for the cross-component coding mode is calculated for a reconstructed block predicted using a mode different from the cross-component coding (1303, 1403).

20. A system for decoding a current image, comprising the apparatus described in claim 12 or any one of claims 14 to 19, and comprising an electronic circuit configured to reconstruct the current block of the current image in a cross-component coding mode.

21. A system for encoding a current image, comprising the apparatus described in any one of claims 13 to 19, and comprising an electronic circuit configured to reconstruct the current block of the current image in a cross-component coding mode.

22. The system according to claim 20 or 21, wherein information representing the model of the cross-component coding mode applied to reconstruct the first block is stored in at least one cell corresponding to the current block in the current buffer that stores coding parameters associated with the current image (1301, 1401).

23. A computer program comprising program code instructions for performing the method described in any one of claims 1 to 11.

24. A non-temporary information storage medium for storing program code instructions for performing the method according to any one of claims 1 to 11.