Cross-component chroma mode with subblocks
By splitting blocks into subblocks and applying cross-component prediction techniques, the method addresses inefficiencies in chroma component encoding, resulting in improved video encoding efficiency and quality.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- MEDIATEK INC
- Filing Date
- 2026-01-15
- Publication Date
- 2026-07-23
AI Technical Summary
Existing video coding standards face challenges in efficiently encoding and decoding chroma components due to limitations in cross-component prediction methods, leading to suboptimal compression and quality in video encoding.
The method involves splitting a current block into subblocks and applying cross-component prediction techniques such as CCLM, MMLM, CCCM, GLM, and inter-CCCM to generate combined chroma predictions, using separate transform modes for each subblock, and signaling syntax elements to determine the prediction type.
This approach enhances encoding efficiency and quality by improving accuracy and reducing complexity in chroma component prediction, leading to better video compression and decoding performance.
Smart Images

Figure CN2026072838_23072026_PF_FP_ABST
Abstract
Description
CROSS-COMPONENT CHROMA MODE WITH SUBBLOCKSCROSS REFERENCE TO RELATED PATENT APPLICATION (S)
[0001] The present disclosure is part of a non-provisional application that claims the priority benefit of U.S. Provisional Patent Application No. 63 / 746,301, filed on 17 January 2025. Content of above-listed application is herein incorporated by reference.TECHNICAL FIELD
[0002] The present disclosure relates generally to video coding. In particular, the present disclosure relates to methods of coding pixel blocks by cross-component prediction.BACKGROUND
[0003] Unless otherwise indicated herein, approaches described in this section are not prior art to the claims listed below and are not admitted as prior art by inclusion in this section.
[0004] High-Efficiency Video Coding (HEVC) is an international video coding standard developed by the Joint Collaborative Team on Video Coding (JCT-VC) . HEVC is based on the hybrid block-based motion-compensated DCT-like transform coding architecture. The basic unit for compression, termed coding unit (CU) , is a 2Nx2N square block of pixels, and each CU can be recursively split into four smaller CUs until the predefined minimum size is reached. Each CU contains one or multiple prediction units (PUs) .
[0005] Versatile video coding (VVC) is the latest international video coding standard developed by the Joint Video Expert Team (JVET) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11. The input video signal is predicted from the reconstructed signal, which is derived from the coded picture regions. The prediction residual signal is processed by a block transform. The transform coefficients are quantized and entropy coded together with other side information in the bitstream. The reconstructed signal is generated from the prediction signal and the reconstructed residual signal after inverse transform on the de-quantized transform coefficients. The reconstructed signal is further processed by in-loop filtering for removing coding artifacts. The decoded pictures are stored in the frame buffer for predicting the future pictures in the input video signal.
[0006] In VVC, a coded picture is partitioned into non-overlapped square block regions represented by the associated coding tree units (CTUs) . The leaf nodes of a coding tree correspond to the coding units (CUs) . A coded picture can be represented by a collection of slices, each comprising an integer number of CTUs. The individual CTUs in a slice are processed in raster-scan order. A bi-predictive (B) slice may be decoded using intra prediction or inter prediction with at most two motion vectors (MVs) and reference indices to predict the sample values of each block. A predictive (P) slice is decoded using intra prediction or inter prediction with at most one motion vector and reference index to predict the sample values of each block. An intra (I) slice is decoded using intra prediction only.
[0007] For each inter-predicted CU, motion parameters consisting of motion vectors, reference picture indices and reference picture list usage index, and additional information are used for inter-predicted sample generation. The motion parameter can be signalled in an explicit or implicit manner. When a CU is coded with skip mode, the CU is associated with one PU and has no significant residual coefficients, no coded motion vector delta or reference picture index. A merge mode is specified whereby the motion parameters for the current CU are obtained from neighbouring CUs, including spatial and temporal candidates, and additional schedules introduced in VVC. The merge mode can be applied to any inter-predicted CU. The alternative to merge mode is the explicit transmission of motion parameters, where motion vector, corresponding reference picture index for each reference picture list and reference picture list usage flag and other needed information are signalled explicitly per each CU.SUMMARY
[0008] The following summary is illustrative only and is not intended to be limiting in any way. That is, the following summary is provided to introduce concepts, highlights, benefits and advantages of the novel and non-obvious techniques described herein. Select and not all implementations are further described below in the detailed description. Thus, the following summary is not intended to identify essential features of the claimed subject matter, nor is it intended for use in determining the scope of the claimed subject matter.
[0009] Some embodiments of the disclosure provide a method of using combined prediction to encode or decode chroma component of a block of pixel. A video coder receives data to be encoded or decoded as a current block of pixels of a current picture of a video, the current block having at least one chroma component. The current block is divided into a plurality of subblocks. The video coder generates a first prediction of the chroma component by using cross-component prediction associated with a first subblock. The video coder generates a second prediction of the chroma component. The video coder generates a combined prediction of the chroma component based on the first and second predictions. The video coder encodes or decodes the current block by using the combined prediction of the chroma component.
[0010] In some embodiments, the first prediction of the chroma component is generated by predicting a subblock using the subblock’s own one or more cross-component models. The one or more cross-component models of the subblock may be derived for the subblock by using a reference region that is determined for the subblock. At least one of the one or more cross-component models of a subblock of the current block may be referenced for coding a subsequent block. The cross-component prediction associated with the current block may use the cross-component model associated with any of cross-component linear model (CCLM) , multi-model linear model (MMLM) , convolutional cross-component model (CCCM) , gradient linear model (GLM) , chroma fusion, cross-component prediction (CCP) merge mode, inter-CCCM, etc.
[0011] In some embodiments, the second prediction of the chroma component is generated without using cross-component prediction. The second prediction may be generated by inter prediction, intra prediction, intra block copy, etc. In some embodiments, the second prediction of the chroma component is generated by predicting a second subblock using the second subblock’s own one or more cross-component models.
[0012] In some embodiments, a syntax element is signaled or parsed to indicate whether (i) a combined prediction, or (ii) a cross-component prediction, or (iii) a non-cross-component prediction is used to encode or decode the chroma component of the current block. In some embodiments, each subblock is transformed or inverse transformed using the subblock’s own transform mode.BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The accompanying drawings are included to provide a further understanding of the present disclosure, and are incorporated in and constitute a part of the present disclosure. The drawings illustrate implementations of the present disclosure and, together with the description, serve to explain the principles of the present disclosure. It is appreciable that the drawings are not necessarily in scale as some components may be shown to be out of proportion than the size in actual implementation in order to clearly illustrate the concept of the present disclosure.
[0014] FIG. 1 shows a current block being split into subblocks that are coded using cross-component chroma prediction.
[0015] FIG. 2 illustrates an example video encoder that may implement cross-component prediction with subblocks.
[0016] FIG. 3 illustrates portions of the video encoder that implement chroma prediction using combined prediction with subblocks.
[0017] FIG. 4 conceptually illustrates a process for encoding a pixel block by combined prediction for chroma component with subblocks.
[0018] FIG. 5 illustrates an example video decoder that may implement cross-component prediction with subblocks.
[0019] FIG. 6 illustrates portions of the video decoder that implement chroma prediction using combined prediction with subblocks.
[0020] FIG. 7 conceptually illustrates a process for decoding a pixel block by combined prediction for chroma component with subblocks.
[0021] FIG. 8 conceptually illustrates an electronic system with which some embodiments of the present disclosure are implemented.DETAILED DESCRIPTION
[0022] In the following detailed description, numerous specific details are set forth by way of examples in order to provide a thorough understanding of the relevant teachings. Any variations, derivatives and / or extensions based on teachings described herein are within the protective scope of the present disclosure. In some instances, well-known methods, procedures, components, and / or circuitry pertaining to one or more example implementations disclosed herein may be described at a relatively high level without detail, in order to avoid unnecessarily obscuring aspects of teachings of the present disclosure. I. Current Picture Prediction
[0023] A. Intra Prediction Modes and MPMs
[0024] Intra-prediction method exploits one or more reference lines adjacent to the current prediction unit (PU) and one of the intra-prediction modes to generate the predictors for the current PU. The Intra-prediction direction can be chosen among a mode set containing multiple prediction directions, DC mode, and Planar mode. The intra prediction mode may also refer to any intra mode which determines the predictor of the current block using the spatially reconstructed samples. The number of directional intra modes may be 33 or extended to 65 direction modes. By including DC and Planar modes, the number of intra-prediction mode is 35 or extended to 67.
[0025] To keep the complexity of the most probable mode (MPM) list generation low, an intra mode coding method with 6 MPMs (or called primary MPMs) is used by considering two available neighboring intra modes. The following three aspects are considered to construct the MPM list: default intra modes, neighboring intra modes, and derived intra modes.
[0026] B. Intra Block Copy (IBC) and Intra Template Matching (IntraTMP)
[0027] Intra block copy (IBC) or current picture referencing (CPR) refer to coding pixel blocks by referencing pixel positions within same current picture as the current block by using block vectors.
[0028] Intra template matching prediction (IntraTMP) is a special intra prediction mode that copies the best prediction block from the reconstructed part of the current frame, whose L-shaped template matches the L-shaped template of the current block. For a predefined search range, the encoder searches for the most similar template to the current template in a reconstructed part of the current frame and uses the corresponding block as a prediction block. The encoder then signals the usage of this mode, and the same prediction operation is performed at the decoder side.
[0029] C. Direct Block Vector (DBV) for chroma block
[0030] A flag may be signaled to indicate whether a chroma block is coded using intra block copy (IBC) mode. If one of the luma blocks at any one of the five specific locations is coded with IBC or intraTMP mode, block vector of that luma block is scaled and is used as a block vector (direct block vector or DBV) for the chroma block. Template matching may be used to perform block vector scaling.
[0031] D. Decoder Side Intra Mode Derivation (DIMD)
[0032] Decoder-Side Intra Mode Derivation (DIMD) is a technique in which one or more, for example, two, intra prediction modes such as angles or directions are derived from the reconstructed neighbor samples (template) of a block, and those two predictors are combined with the non-angular predictor such as planar mode predictor with the weights derived from the gradients. To implicitly derive the intra prediction modes of a block, a texture gradient analysis is performed at both encoder and decoder sides. This process starts with an empty Histogram of Gradient (HoG) having 65 entries, corresponding to the 65 angular / directional intra prediction modes. Amplitudes of these entries are determined during the texture gradient analysis.
[0033] In some embodiments, when DIMD is applied, up to five intra modes are derived from the reconstructed neighbor samples, and those five predictors are combined with the planar mode predictor with the weights derived from the histogram of gradients. The decision between for the non-directional modes is taken according to the template cost. Specifically, the block vectors of all adjacent and non-adjacent merge candidates (coded in IntraTMP or IBC) are compared to planar prediction on the reconstructed template. The template cost (SATD) may be used to select the best predictor among them. II. Cross-Component Prediction
[0034] Cross-component prediction generates a prediction of one component (typically chroma) based on pixel samples (reconstructed or predicted) of another component (typically luma) . The following are several different types of cross-component predictions:
[0035] Cross Component Linear Model (CCLM) or Linear Model (LM) mode is a cross-component prediction mode in which chroma components of a block is predicted from the collocated reconstructed luma samples by linear models. The parameters (e.g., scale and offset) of the linear model are derived from already reconstructed luma and chroma samples that are adjacent to the block. This prediction maybe carried out using a linear model in the form of: P (i, j) =α·rec′L (i, j) +β
[0036] P (i, j) represents the predicted chroma samples in a CU (or the predicted chroma samples of the current CU) and rec′L (i, j) represents the down-sampled reconstructed luma samples of the same CU (or the corresponding reconstructed luma samples of the current CU) . The CCLM model parameters α (scaling parameter) and β (offset parameter) are derived based on neighboring chroma samples and their corresponding down-sampled luma samples.
[0037] Multiple model CCLM mode (MMLM) uses two models for predicting the chroma samples from the luma samples for the whole CU. Similar to CCLM, three multiple model CCLM modes (MMLM_LA, MMLM_A, and MMLM_L) are used to indicate if both above and left neighboring samples, only above neighboring samples, or only left neighboring samples are used in model parameters derivation.
[0038] Convolutional cross-component model (CCCM) uses a 7-tap filter having a 5-tap plus sign shape spatial component, a non-linear term and a bias term to generate the cross-component prediction. The input to the spatial 5-tap component of the filter includes a center (C) luma sample (which is collocated with the chroma sample to be predicted) and the center luma sample’s above / north (N) , below / south (S) , left / west (W) and right / east (E) neighbors.
[0039] Gradient linear model (GLM) utilizes luma sample gradients to derive the linear model instead of down-sampled luma values. In GLM, the chroma value C is derived based on gradient G and luma value L according to: (α, β are model parameters) C = α·G + β; or C = α0·G + α1·L + α2·β
[0040] A. CCP merge for chroma inter blocks
[0041] For chroma coding, a flag may be signaled to indicate whether CCP mode (including the cross-component linear model (CCLM) , convolutional cross-component model (CCCM) , gradient linear model (GLM) and their variants) or non-CCP mode (conventional chroma intra prediction mode, fusion of chroma intra prediction mode) is used. If the CCP mode is selected, one more flag is signaled to indicate how to derive the CCP type and parameters, i.e., either from a CCP merge list or signaled / derived on-the-fly. A CCP merge candidate list is constructed from the spatial adjacent, temporal, spatial non-adjacent, history-based candidates or shifted temporal candidates. After including these candidates, default models are further included to fill the remaining empty positions in the merge list. To remove redundant CCP models in the list, pruning operation is applied. After constructing the list, the CCP models in the list are reordered depending on the SAD costs, which are obtained using the neighboring template of the current block.
[0042] Temporal candidates may be selected from the collocated picture. The position and inclusion order of the temporal candidates are the same as those defined in ECM for regular inter merge prediction candidates. The shifted temporal candidates are also selected from the collocated picture. The position of temporal candidates is shifted by a selected motion vector which is derived from motion vectors of neighboring blocks.
[0043] The cross-component prediction merge mode described above is extended to chroma inter coding. The CCP models including CCLM, multi-model LM (MMLM) , CCCM, GLM, chroma fusion, CCP merge modes, and inter CCCM are stored and inherited for the following coding chroma intra and inter blocks. Similar to the CCP merge for chroma intra blocks, a flag may be signaled to indicate whether a chroma inter block is coded using this mode. When the root CBF is equal to 0, a CU-level flag is signalled. Otherwise, a TU-level flag is signalled. If the CCP merge mode is used, a CCP merge list is constructed in a similar way as that for chroma intra blocks except that additional shifted temporal candidates and on-the-fly derived candidates are included in the CCP merge list. After the CCP merge list is constructed, the candidate with the lowest template cost is selected for the chroma inter block. The chroma inter block is then predicted in the same way as that of inter CCCM. That is, the motion compensation predicted samples are blended with the cross-component predicted samples to form the final prediction.
[0044] B. InterCCCM
[0045] InterCCCM (or called as inter CCCM) applies the CCCM method for predicting chroma samples from reconstructed luma samples when the CU uses inter prediction or intra block copy (IBC) . The cross-component filters are derived using the prediction blocks of luma and chroma. The derived filters are applied to the reconstructed luma block and blended with the prediction blocks of chroma to produce the final chroma prediction blocks. In the blending process the filtered reconstructed luma blocks use blending weight of 0.75 and chroma prediction blocks use blending weight of 0.25.
[0046] C. Fusion of Chroma Intra Prediction Modes
[0047] In some embodiments, two chroma intra prediction signals can be fused together. One of the two chroma intra prediction signals is predicted using one of the direct mode (DM) , DIMD chroma mode and the four default modes (non-LM mode) . The other chroma intra prediction signal is predicted using cross-component linear prediction modes (LM mode) .
[0048] D. DIMD chroma mode
[0049] DIMD chroma mode uses the DIMD derivation method to derive the chroma intra prediction mode of the current block based on the neighboring reconstructed Y, Cb and Cr samples. Specifically, a horizontal gradient and a vertical gradient are calculated for each collocated reconstructed luma sample of the current chroma block, as well as the reconstructed Cb and Cr samples, to build a HoG. Then the intra prediction mode with the largest histogram amplitude values is used for performing chroma intra prediction of the current chroma block.
[0050] E. Block Vector guided CCCM (BVG-CCCM)
[0051] When the co-located luma prediction is coded with IBC or IntraTMP in Intra slices, the BVG-CCCM mode can be used. In this mode, the block vectors of the co-located luma blocks, coded in IBC or intraTMP modes, are used to determine the reference area for calculating the CCCM parameters. The prediction is performed using the calculated model parameters and co-located luma samples.
[0052] F. Subblock-based CCCM
[0053] In some embodiments, CCCM may be applied to a CU on a sequential, subblock-by-subblock basis. The motivation is to improve the accuracy of CCCM parameter derivation because the reference samples are closer to the predicted samples. Additionally, it also reduces the memory fetching operations for parameter derivation because the size of the subblocks is smaller.
[0054] Specifically, the current chroma prediction blocks are split into subblocks while maintaining the original ratio between width and height. Correspondently, the reference area is also divided into smaller reference area while keeping the same reference type. For each subblock, similar CCCM model derivation and chroma prediction process are applied sequentially in a zigzag scanning order. The subdivision does not require any rate-distortion (RD) optimization at the encoder and no additional signaling is required. To avoid high complexity, subblock partitioning is only applied for chroma prediction units (PUs) with area size (width x height) greater than 256 samples and smaller than 128x128 samples. The maximum number of partitions is restricted to be 4. III. Combined Prediction as Final Chroma Prediction
[0055] In some embodiments, the final chroma prediction of the current block is generated using the cross-component chroma prediction. In some embodiments, the final chroma prediction of the current block is formed by directly using the cross-component chroma prediction that is generated using one or more cross-component models. In some embodiments, in addition to existing chroma prediction for the current block, the final chroma prediction of the current block is a combined prediction formed by the existing chroma prediction and the additional cross-component chroma prediction, generated using one or more cross-component models. Weighting for the combined prediction may have different options selected according to implicit rules or explicit indication.
[0056] In some embodiments, the current block may be split into multiple subblocks (for example, transform blocks) , with each subblock of the current block determining its own reference region for deriving the one or more cross-component models, and each subblock of the current block is predicted using its own derived one or more cross-component models. Each subblock of the current block may be transformed using its own transform mode. The cross-component models of subblocks can be referenced by subsequent blocks.
[0057] In some embodiments, the current block is a non-intra block (for example, an intra block copy (IBC) block or an inter block) . The cross-component models may be any of the pre-defined cross-component models, for example, CCLM, multi-model LM (MMLM) , CCCM, GLM, chroma fusion, CCP merge modes, and / or inter CCCM. In some embodiments, whether to use a combined prediction (formed by the existing chroma prediction and the additional cross-component chroma prediction) as the final chroma prediction of the current block depends on syntax for block, tile, slice, picture, SPS, PPS, or sequence level. For example, for content of screen content coding (SCC) , the combined prediction may not be enabled, so that the final chroma prediction of the current block use only the cross-component chroma prediction, or use only an existing chroma prediction (e.g., intra prediction, inter prediction, IBC prediction, etc., that does not use cross-component prediction) .
[0058] A. Splitting the Current Block into Subblocks
[0059] In some embodiments, the current block is coded with a target mode that uses one or more target cross-component models. The current block may be a CU / CB or a TU / TB. According to a maximum splitting number, a splitting method, and / or a splitting validation checking, the current block is split into subblocks. FIG. 1 shows a current block being split into subblocks that are coded using cross-component chroma prediction. As illustrated, the current block 100 (which refers to a TU / TB) is split into subblocks 111-114 (which may refer to multiple smaller TUs / TBs) according to a quadtree splitting method. In some embodiments, each subblock corresponds to a TU / TB.
[0060] In some embodiments, the maximum splitting number is defined to determine the maximum number (e.g., 4) of subblocks in the current block. In some embodiments, the maximum splitting number is defined according to a minimum subblock size. In some embodiments, the splitting method is pre-defined as quadtree splitting, horizontal or vertical binary tree splitting, horizontal or vertical ternary tree splitting, and / or any TU / TB splitting methods defined in the standard. When splitting by quadtree splitting, the ratio of subblock width and subblock height is the same as the ratio of current block width and current block height.
[0061] In some embodiments, the splitting validation checking checks a minimum block size. Only if the subblock width (as the size after splitting) and the subblock height (as the size after splitting) are both larger than or equal to the minimum block size, the splitting validation checking specifies the splitting is valid for the current block and / or the current block will be split. The minimum block size can be set as the minimum TU / TB size or any positive integer specified in the standard. In some embodiments, the minimum block size is minimum TU / TB size unified as the general minimum TU / TB size specified in the standard. In some embodiments, the minimum block size here is determined according to a target number associated with the target mode. For example, the target number may be pre-defined in the standard or is determined according to syntax such as the syntax on block, tile, slice, picture, SPS, PPS, or sequence level. For another example, the target number may be smaller than the current block size (width or height) and / or larger than or equal to the general minimum TU / TB size specified in the standard. For another example, the target number may be smaller than the general minimum TU / TB size specified in the standard.
[0062] In some embodiments, the maximum splitting number, the splitting method, and / or the splitting validation checking can be implicitly decided and / or explicitly determined according to the syntax in block, tile, slice, picture, SPS, PPS, or sequence level.
[0063] B. Cross-component models for subblocks
[0064] In some embodiments, the video coder determines a reference region for deriving the one or more cross-component models for each subblock. In the example of FIG. 1, regions 131 and 141 may be used to derive a cross-component model 121 for the subblock 111. Regions 132 and 141 may be used to derive a cross-component model 122 for the subblock 112. Regions 131 and 142 may be used to derive a cross-component model 123 for the subblock 113. Regions 132 and 142 may be used to derive a cross-component model 124 for the subblock 114. The reference regions shown in FIG. 1 are examples for illustrative purpose only. In some embodiments, the reference regions used for deriving cross-component models of different subblocks may be taken from positions different from those shown in FIG. 1.
[0065] In some embodiments, when the to-be-derived cross-component model is an inter-CCCM model, the subblock uses its prediction blocks (motion compensation signals using motion vectors or block vectors) of luma and chroma associated with this subblock to derive the model (s) for this subblock. In some embodiments, the subblock further uses its neighbor blocks (neighbor reconstructed signals) of luma and chroma associated with this subblock to derive the models for this subblock. For example, in some embodiments, when the block width, block height, and / or block area of a subblock is smaller than a pre-defined threshold, the subblock may further use its neighbor blocks (neighbor reconstructed signals) of luma and chroma associated with this subblock to derive the models for this subblock. (The neighbor block of a subblock may be a previous-coded subblock in the current block and / or a previous-coded block neighbor to the current block. ) When each subblock refers to a TU / TB, each subblock can be transformed / reconstructed following the processing order, for example, zigzag scanning order. In the example of FIG. 1, the four subblocks 111-114 (labeled “subblock 1” to “subblock 4” ) are processed in a zigzag order, i.e., subblock 111 is processed first, then subblock 112, then subblock 113, then subblock 114.
[0066] In some embodiments, each subblock in the current block uses the same cross-component model type. For example, all subblocks in the current block use inter CCCM method to derive the corresponding model parameters, respectively. That is, a unified inter CCCM method is applied to each subblock in the current block to do model derivation. The first subblock uses its prediction blocks (motion compensation signals using motion vectors or block vectors) of luma and chroma associated with the first subblock to derive the models for the first subblock, the second subblock uses its prediction blocks (motion compensation signals using motion vectors or block vectors) of luma and chroma associated with the second subblock to derive the models for the second subblock, so on and so forth.
[0067] In some embodiments, the different subblocks in the current block use different cross-component model types. For example, the subblocks adjacent to the top and / or left boundary of the current block (e.g., subblock 111, subblock 112, or subblock 113 of FIG. 1) use the cross-component model type as CCCM and the other subblock (for example, subblock 114 of FIG. 1) uses the cross-component model type as inter CCCM.
[0068] In some embodiments, each subblock is predicted by using its own derived one or more cross-component models. For example, in some embodiments, when the target cross-component model (s) is interCCCM, for a subblock, its own derived one or more cross-component models are applied to the corresponding luma reconstructed and / or predicted samples to generate the cross-component chroma prediction. For another example of FIG. 1, the cross-component chroma predictions of the subblock 111-114 are generated using the cross-component models 121-124, respectively.
[0069] C. Transform for subblocks
[0070] In some embodiments, each subblock is transformed using its own transform mode. In some embodiments, each subblock may be treated as a TU / TB, and each subblock may determine its own transform mode. Different transform modes can be used to transform / reconstruct different subblocks, respectively. In the example of FIG. 1, the four subblocks 111-114 may be treated as four separate TU / TB, such that the subblocks are transformed or inverse transformed separately, possibly by different transform modes.
[0071] In some embodiments, for each subblock, separated transform syntax is signaled to select the transform mode. The transform syntax may be associated with the index for primary transform (such as separable or non-separable primary transform) and / or secondary transform (such as separable or non-separable secondary transform) . For example, the transform mode may be associated with multiple transform selection (MTS) , low-frequency non-separable transform (LFNST) , and / or multiple transform set selection (MTSS) . In some embodiments, each subblock may use a unified transform setting. In some embodiments, the unified transform setting may be applied to transforming or reconstructing each subblock separately.
[0072] D. Referencing subblock cross-component models by subsequent blocks
[0073] In some embodiments, the one or more cross-component models for generating the cross-component chroma prediction for each subblock can be stored and / or referenced for coding subsequent blocks or the following block using e.g., (i) CCP merge mode for chroma intra coding or chroma inter coding, or (ii) any merge mode.
[0074] In some embodiments, the cross-component models (for the subblocks) are stored in the buffer per TU / TB. In some embodiments, a to-be-referenced position is determined for the following block. The stored one or more cross-component models associated with the to-be-referenced position can be referenced for the following block. In some embodiments, one or more cross-component models derived using the reconstructed or predicted samples of a block associated with the to-be-referenced position can be referenced for the following block.
[0075] The methods described in this disclosure can be enabled and / or disabled according to implicit rules (e.g. block width, height, or area) or according to explicit rules (e.g. syntax on block, tile, slice, picture, SPS, PPS, or sequence level) . For example, the proposed method is applied when the block area is smaller / larger than a threshold. The term “block” in this invention can refer to TU / TB, CU / CB, PU / PB, pre-defined region, or CTU / CTB.
[0076] Any combination of the proposed methods in this invention can be applied. Any of the foregoing proposed methods can be implemented in encoders and / or decoders. For example, any of the proposed methods can be implemented in an intra / prediction / inter / IBC module of an encoder, and / or an intra / prediction / inter / IBC module of a decoder. Alternatively, any of the proposed methods can be implemented as a circuit coupled to the intra / prediction / inter / IBC module of the encoder and / or the intra / prediction / inter / IBC module of the decoder, so as to provide the information needed by the intra / prediction / inter / IBC module. IV. Example Video Encoder
[0077] FIG. 2 illustrates an example video encoder 200 that may implement cross-component prediction with subblocks. As illustrated, the video encoder 200 receives input video signal from a video source 205 and encodes the signal into bitstream 295. The video encoder 200 has several components or modules for encoding the signal from the video source 205, at least including some components selected from a transform module 210, a quantization module 211, an inverse quantization module 214, an inverse transform module 215, an intra estimation module 224, an intra prediction module 225, a motion compensation module 230, a motion estimation module 235, an in-loop filter 245, a reconstructed picture buffer 250, a MV buffer 265, and a MV prediction module 275, and an entropy encoder 290. The motion compensation module 230 and the motion estimation module 235 are part of an inter-prediction module 240. The intra-prediction module 225 and the intra-estimation module 224 are part of a current picture prediction module 220, which uses current picture reconstructed samples as reference samples for prediction of the current block.
[0078] In some embodiments, the modules 210 –290 are modules of software instructions being executed by one or more processing units (e.g., a processor) of a computing device or electronic apparatus. In some embodiments, the modules 210 –290 are modules of hardware circuits implemented by one or more integrated circuits (ICs) of an electronic apparatus. Though the modules 210 –290 are illustrated as being separate modules, some of the modules can be combined into a single module.
[0079] The video source 205 provides a raw video signal that presents pixel data of each video frame without compression. A subtractor 208 computes the difference between the raw video pixel data of the video source 205 and the predicted pixel data 213 from the motion compensation module 230 or intra-prediction module 225 as prediction residual 209. The transform module 210 converts the difference (or the residual pixel data or residual signal 209) into transform coefficients (e.g., by performing Discrete Cosine Transform, or DCT) . The quantization module 211 quantizes the transform coefficients into quantized data (or quantized coefficients) 212, which is encoded into the bitstream 295 by the entropy encoder 290.
[0080] The inverse quantization module 214 de-quantizes the quantized data (or quantized coefficients) 212 to obtain transform coefficients 218, and the inverse transform module 215 performs inverse transform on the transform coefficients 218 to produce reconstructed residual 219. The reconstructed residual 219 is added with the predicted pixel data 213 to produce reconstructed pixel data 217. In some embodiments, the reconstructed pixel data 217 is temporarily stored in a line buffer 227 (or intra prediction buffer) for intra-picture prediction and spatial MV prediction. The reconstructed pixels are filtered by the in-loop filter 245 and stored in the reconstructed picture buffer 250. In some embodiments, the reconstructed picture buffer 250 is a storage external to the video encoder 200. In some embodiments, the reconstructed picture buffer 250 is a storage internal to the video encoder 200.
[0081] The intra estimation module 224 derives intra-prediction data (e.g., intra prediction modes) based on the reconstructed pixel data 217 (stored in the line buffer 227) . The intra-prediction data is provided to the entropy encoder 290 to be encoded into bitstream 295. The intra-prediction data is also used by the intra-prediction module 225 to produce the predicted pixel data 213.
[0082] The motion estimation module 235 performs inter-prediction by producing MVs to reference pixel data of previously decoded frames stored in the reconstructed picture buffer 250. These MVs are provided to the motion compensation module 230 to produce predicted pixel data.
[0083] Instead of encoding the complete actual MVs in the bitstream, the video encoder 200 uses MV prediction to generate predicted MVs, and the difference between the MVs used for motion compensation and the predicted MVs is encoded as residual motion data and stored in the bitstream 295.
[0084] The MV prediction module 275 generates the predicted MVs based on reference MVs that were generated for encoding previously video frames, i.e., the motion compensation MVs that were used to perform motion compensation. The MV prediction module 275 retrieves reference MVs from previous video frames from the MV buffer 265. The video encoder 200 stores the MVs generated for the current video frame in the MV buffer 265 as reference MVs for generating predicted MVs.
[0085] The MV prediction module 275 uses the reference MVs to create the predicted MVs. The predicted MVs can be computed by spatial MV prediction or temporal MV prediction. The difference between the predicted MVs and the motion compensation MVs (MC MVs) of the current frame (residual motion data) are encoded into the bitstream 295 by the entropy encoder 290.
[0086] The entropy encoder 290 encodes various parameters and data into the bitstream 295 by using entropy-coding techniques such as context-adaptive binary arithmetic coding (CABAC) or Huffman encoding. The entropy encoder 290 encodes various header elements, flags, along with the quantized transform coefficients 212, and the residual motion data as syntax elements into the bitstream 295. The bitstream 295 is in turn stored in a storage device or transmitted to a decoder over a communications medium such as a network.
[0087] The in-loop filter 245 performs filtering or smoothing operations on the reconstructed pixel data 217 to reduce the artifacts of coding, particularly at boundaries of pixel blocks. In some embodiments, the filtering or smoothing operations performed by the in-loop filter 245 include deblock filter (DBF) , sample adaptive offset (SAO) , and / or adaptive loop filter (ALF) . In some embodiments, luma mapping chroma scaling (LMCS) is performed before the loop filters.
[0088] FIG. 3 illustrates portions of the video encoder 200 that implement chroma prediction using combined prediction with subblocks. The figure illustrates the generation of the final prediction 350 of the chroma component as the combination of predictions from one or more cross-component predictions 342 and / or one or more non-cross-component predictions 344. The one or more cross-component prediction 342 and the one or more non-cross-component prediction 344 may be derived based on reference samples 325, which may be reconstructed or predicted samples that are taken from the reconstructed picture buffer 250, the line buffer 227, the predicted pixel data 213, or the reconstructed pixel data 217.
[0089] The one or more cross-component predictions 342 are derived by a cross-component prediction module 310 using luma samples among the reference samples 325, by using cross-component models that are stored in a cross-component model storage 320 or derived by a model derivation module 330. The one or more cross-component predictions 342 may perform the cross-component prediction on a subblock-by-subblock basis. The cross-component prediction of a subblock may use its own cross-component model, and different subblocks of the current block may use different cross-component models. In some embodiments, different subblocks may use cross-component models of different types (e.g., CCLM, CCCM, GLM, MMLM, chroma fusion, CCP merge modes, inter CCCM, etc. ) The model derivation module 330 may derive the cross-component models of different subblocks based on samples from different reference regions. The cross-component models used for cross-component predictions of subblocks may be stored in the cross-component storage 320 for use or reference by subsequently coded blocks.
[0090] The one or more non-cross-component predictions 344 are derived by the inter-prediction module 230 and / or the current picture prediction module 220 using chroma samples among the reference samples 325. (The current picture prediction 220 may perform intra prediction, IBC, IntraTMP, or other types of prediction that use samples of the current picture as reference samples. )
[0091] Finally, a prediction combiner 340 combines at least two predictions from the one or more cross-component predictions 342 (which may be one or more subblock cross-component predictions) , the one or more non-cross-component predictions 344 or combination thereof to generate the final chroma prediction 350. In some embodiments, the prediction combiner 340 combines predictions formed by subblock cross-component predictions to generate the final chroma prediction 350. The final chroma prediction 350 then become part of the predicted pixel data 213. Whether to use the combined prediction, or only the one or more cross-component predictions 342, or only the one or more non-cross-component predictions 344, as the final chroma prediction 340 is determined by the entropy encoder 290, which may signal related syntax in the bitstream 295.
[0092] FIG. 4 conceptually illustrates a process 400 for encoding a pixel block by combined prediction for chroma component with subblocks. In some embodiments, one or more processing units (e.g., a processor) of a computing device implementing the encoder 200 performs the process 400 by executing instructions stored in a computer readable medium. In some embodiments, an electronic apparatus implementing the encoder 200 performs the process 400.
[0093] The encoder receives (at block 410) data to be encoded as a current block of pixels in a current picture of a video, the current block having at least one chroma component, wherein the current block is divided into a plurality of subblocks.
[0094] The encoder generates (at block 420) a first prediction of the chroma component by using cross-component prediction associated with a first subblock. In some embodiments, the first prediction of the chroma component is generated by predicting a subblock using the subblock’s own one or more cross-component models. The one or more cross-component models of the subblock may be derived for the subblock by using a reference region that is determined for the subblock. At least one of the one or more cross-component models of a subblock of the current block may be referenced for coding a subsequent block. The cross-component prediction associated with the current block may use the cross-component model associated with any of cross-component linear model (CCLM) , multi-model linear model (MMLM) , convolutional cross-component model (CCCM) , gradient linear model (GLM) , chroma fusion, cross-component prediction (CCP) merge mode, inter-CCCM, etc. Cross-component models for subblocks are further described in Section III. B above.
[0095] The encoder generates (at block 430) a second prediction of the chroma component. In some embodiments, the second prediction of the chroma component is generated without using cross-component prediction. The second prediction may be generated by inter prediction, intra prediction, IBC, etc. . In some embodiments, the second prediction of the chroma component is generated by predicting a second subblock using the second subblock’s own one or more cross-component models.
[0096] The encoder generates a combined prediction of the chroma component (at block 440) based on the first and second predictions. In some embodiments, a syntax element is signaled to indicate whether (i) the combined prediction, or (ii) a cross-component prediction, or (iii) a non-cross-component prediction is used to encode the chroma component of the current block.
[0097] The encoder encodes (at block 450) the current block by using the combined prediction of the chroma component. In some embodiments, each subblock is transformed using the subblock’s own transform mode. Transform of subblock is further described in Section III-C above. V. Example Video Decoder
[0098] In some embodiments, an encoder may signal (or generate) one or more syntax element in a bitstream, such that a decoder may parse said one or more syntax element from the bitstream.
[0099] FIG. 5 illustrates an example video decoder 500 that may implement cross-component prediction with subblocks. As illustrated, the video decoder 500 is an image-decoding or video-decoding circuit that receives a bitstream 595 and decodes the content of the bitstream into pixel data of video frames for display. The video decoder 500 has several components or modules for decoding the bitstream 595, including some components selected from an inverse quantization module 514, an inverse transform module 515, an intra-prediction module 525, a motion compensation module 530, an in-loop filter 545, a decoded picture buffer 550, a MV buffer 565, a MV prediction module 575, and a parser 590. The motion compensation module 530 is part of an inter-prediction module 540. The intra-prediction module 525 is part of a current picture prediction module 520, which uses current picture reconstructed samples as reference samples for prediction of the current block.
[0100] In some embodiments, the modules 514 –590 are modules of software instructions being executed by one or more processing units (e.g., a processor) of a computing device. In some embodiments, the modules 514 –590 are modules of hardware circuits implemented by one or more ICs of an electronic apparatus. Though the modules 514 –590 are illustrated as being separate modules, some of the modules can be combined into a single module.
[0101] The parser 590 (or entropy decoder) receives the bitstream 595 and performs initial parsing according to the syntax defined by a video-coding or image-coding standard. The parsed syntax element includes various header elements, flags, as well as quantized data (or quantized coefficients) 512. The parser 590 parses out the various syntax elements by using entropy-coding techniques such as context-adaptive binary arithmetic coding (CABAC) or Huffman encoding.
[0102] The inverse quantization module 514 de-quantizes the quantized data (or quantized coefficients) 512 to obtain transform coefficients, and the inverse transform module 515 performs inverse transform on the transform coefficients 518 to produce reconstructed residual signal 519. The reconstructed residual signal 519 is added with predicted pixel data 513 from the intra-prediction module 525 or the motion compensation module 530 to produce decoded pixel data 517. The decoded pixels data are filtered by the in-loop filter 545 and stored in the decoded picture buffer 550. In some embodiments, the decoded picture buffer 550 is a storage external to the video decoder 500. In some embodiments, the decoded picture buffer 550 is a storage internal to the video decoder 500.
[0103] The intra-prediction module 525 receives intra-prediction data from bitstream 595 and according to which, produces the predicted pixel data 513 from the decoded pixel data 517 stored in the decoded picture buffer 550. In some embodiments, the decoded pixel data 517 is also stored in a line buffer 527 (or intra prediction buffer) for intra-picture prediction and spatial MV prediction.
[0104] In some embodiments, the content of the decoded picture buffer 550 is used for display. A display device 505 either retrieves the content of the decoded picture buffer 550 for display directly, or retrieves the content of the decoded picture buffer to a display buffer. In some embodiments, the display device receives pixel values from the decoded picture buffer 550 through a pixel transport.
[0105] The motion compensation module 530 produces predicted pixel data 513 from the decoded pixel data 517 stored in the decoded picture buffer 550 according to motion compensation MVs (MC MVs) . These motion compensation MVs are decoded by adding the residual motion data received from the bitstream 595 with predicted MVs received from the MV prediction module 575.
[0106] The MV prediction module 575 generates the predicted MVs based on reference MVs that were generated for decoding previous video frames, e.g., the motion compensation MVs that were used to perform motion compensation. The MV prediction module 575 retrieves the reference MVs of previous video frames from the MV buffer 565. The video decoder 500 stores the motion compensation MVs generated for decoding the current video frame in the MV buffer 565 as reference MVs for producing predicted MVs.
[0107] The in-loop filter 545 performs filtering or smoothing operations on the decoded pixel data 517 to reduce the artifacts of coding, particularly at boundaries of pixel blocks. In some embodiments, the filtering or smoothing operations performed by the in-loop filter 545 include deblock filter (DBF) , sample adaptive offset (SAO) , and / or adaptive loop filter (ALF) . In some embodiments, luma mapping chroma scaling (LMCS) is performed before the loop filters.
[0108] FIG. 6 illustrates portions of the video decoder 500 that implement chroma prediction using combined prediction with subblocks. The figure illustrates the generation of the final prediction 650 of the chroma component as the combination of predictions from one or more cross-component predictions 642 and / or one or more non-cross-component predictions 644. The one or more cross-component predictions 642 and the one or more non-cross-component predictions 644 may be derived based on reference samples 625, which may be reconstructed or predicted samples that are taken from the decoded picture buffer 550, the line buffer 527, the predicted pixel data 513, or the reconstructed pixel data 517.
[0109] The one or more cross-component predictions 642 are derived by a cross-component prediction module 610 using luma samples among the reference samples 625, by using cross-component models that are stored in a cross-component model storage 620 or derived by a model derivation module 630. The one or more cross-component predictions 642 may perform the cross-component prediction on a subblock-by-subblock basis. The cross-component prediction of a subblock may use its own cross-component model, and different subblocks of the current block may use different cross-component models. In some embodiments, different subblocks may use cross-component models of different types (e.g., CCLM, CCCM, GLM, MMLM, chroma fusion, CCP merge modes, inter CCCM, etc. ) The model derivation module 630 may derive the cross-component models of different subblocks based on samples from different reference regions. The cross-component models used for cross-component predictions of subblocks may be stored in the cross-component storage 620 for use or reference by subsequently coded blocks.
[0110] The one or more non-cross-component predictions 644 are derived by the inter-prediction module 530 and / or the current picture prediction module 520 using chroma samples among the reference samples 625. (The current picture prediction 520 may perform intra prediction, IBC, IntraTMP, or other types of prediction that use samples of the current picture as reference samples. )
[0111] Finally, a prediction combiner 640 combines at least two predictions from the one or more cross-component predictions 642 (which may be one or more subblock cross-component predictions) , the one or more non-cross-component predictions 644 or combination thereof to generate the final chroma prediction 650. In some embodiments, the prediction combiner 640 combines predictions formed by subblock cross-component predictions to generate the final chroma prediction 650. The final chroma prediction 650 then become part of the predicted pixel data 513. Whether to use the combined prediction, or only the one or more cross-component predictions 642, or only the one or more non-cross-component predictions 644, as the final chroma prediction 640 is determined by the entropy decoder 590, which parses the bitstream 595 for related syntax.
[0112] FIG. 7 conceptually illustrates a process 700 for decoding a pixel block by combined prediction for chroma component with subblocks. In some embodiments, one or more processing units (e.g., a processor) of a computing device implementing the decoder 500 performs the process 700 by executing instructions stored in a computer readable medium. In some embodiments, an electronic apparatus implementing the decoder 500 performs the process 700.
[0113] The decoder receives (at block 710) data to be decoded as a current block of pixels in a current picture of a video, the current block having at least one chroma component, wherein the current block is divided into a plurality of subblocks.
[0114] The decoder generates (at block 720) a first prediction of the chroma component by using cross-component prediction associated with a first subblock. In some embodiments, the first prediction of the chroma component is generated by predicting a subblock using the subblock’s own one or more cross-component models. The one or more cross-component models of the subblock may be derived for the subblock by using a reference region that is determined for the subblock. At least one of the one or more cross-component models of a subblock of the current block may be referenced for coding a subsequent block. The cross-component prediction associated with the current block may use the cross-component model associated with any of cross-component linear model (CCLM) , multi-model linear model (MMLM) , convolutional cross-component model (CCCM) , gradient linear model (GLM) , chroma fusion, cross-component prediction (CCP) merge mode, inter-CCCM, etc. Cross-component models for subblocks are further described in Section III. B above.
[0115] The decoder generates (at block 730) a second prediction of the chroma component. In some embodiments, the second prediction of the chroma component is generated without using cross-component prediction. The second prediction may be generated by inter prediction, intra prediction, IBC, etc. . In some embodiments, the second prediction of the chroma component is generated by predicting a second subblock using the second subblock’s own one or more cross-component models.
[0116] The decoder generates a combined prediction of the chroma component (at block 740) based on the first and second predictions. In some embodiments, a syntax element is signaled to indicate whether (i) the combined prediction, or (ii) a cross-component prediction, or (iii) a non-cross-component prediction is used to decode the chroma component of the current block.
[0117] The decoder reconstructs (at block 750) the current block by using the combined prediction of the chroma component. In some embodiments, each subblock is inverse transformed using the subblock’s own transform mode. Transform of subblock is further described in Section III-C above. The decoder may then provide the reconstructed current block for display or output as part of the reconstructed current picture. VI. Example Electronic System
[0118] Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium) . When these instructions are executed by one or more computational or processing unit (s) (e.g., one or more processors, cores of processors, or other processing units) , they cause the processing unit (s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, random-access memory (RAM) chips, hard drives, erasable programmable read only memories (EPROMs) , electrically erasable programmable read-only memories (EEPROMs) , etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
[0119] In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage which can be read into memory for processing by a processor. Also, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described here is within the scope of the present disclosure. In some embodiments, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
[0120] FIG. 8 conceptually illustrates an electronic system 800 with which some embodiments of the present disclosure are implemented. The electronic system 800 may be a computer (e.g., a desktop computer, personal computer, tablet computer, etc. ) , phone, PDA, or any other sort of electronic device. Such an electronic system includes various types of computer readable media and interfaces for various other types of computer readable media. Electronic system 800 includes a bus 805, processing unit (s) 810, a graphics-processing unit (GPU) 815, a system memory 820, a network 825, a read-only memory 830, a permanent storage device 835, input devices 840, and output devices 845.
[0121] The bus 805 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 800. For instance, the bus 805 communicatively connects the processing unit (s) 810 with the GPU 815, the read-only memory 830, the system memory 820, and the permanent storage device 835.
[0122] From these various memory units, the processing unit (s) 810 retrieves instructions to execute and data to process in order to execute the processes of the present disclosure. The processing unit (s) may be a single processor or a multi-core processor in different embodiments. Some instructions are passed to and executed by the GPU 815. The GPU 815 can offload various computations or complement the image processing provided by the processing unit (s) 810.
[0123] The read-only-memory (ROM) 830 stores static data and instructions that are used by the processing unit (s) 810 and other modules of the electronic system. The permanent storage device 835, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the electronic system 800 is off. Some embodiments of the present disclosure use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 835.
[0124] Other embodiments use a removable storage device (such as a floppy disk, flash memory device, etc., and its corresponding disk drive) as the permanent storage device. Like the permanent storage device 835, the system memory 820 is a read-and-write memory device. However, unlike storage device 835, the system memory 820 is a volatile read-and-write memory, such a random access memory. The system memory 820 stores some of the instructions and data that the processor uses at runtime. In some embodiments, processes in accordance with the present disclosure are stored in the system memory 820, the permanent storage device 835, and / or the read-only memory 830. For example, the various memory units include instructions for processing multimedia clips in accordance with some embodiments. From these various memory units, the processing unit (s) 810 retrieves instructions to execute and data to process in order to execute the processes of some embodiments.
[0125] The bus 805 also connects to the input and output devices 840 and 845. The input devices 840 enable the user to communicate information and select commands to the electronic system. The input devices 840 include alphanumeric keyboards and pointing devices (also called “cursor control devices” ) , cameras (e.g., webcams) , microphones or similar devices for receiving voice commands, etc. The output devices 845 display images generated by the electronic system or otherwise output data. The output devices 845 include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD) , as well as speakers or similar audio output devices. Some embodiments include devices such as a touchscreen that function as both input and output devices.
[0126] Finally, as shown in FIG. 8, bus 805 also couples electronic system 800 to a network 825 through a network adapter (not shown) . In this manner, the computer can be a part of a network of computers (such as a local area network ( “LAN” ) , a wide area network ( “WAN” ) , or an Intranet, or a network of networks, such as the Internet. Any or all components of electronic system 800 may be used in conjunction with the present disclosure.
[0127] Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media) . Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM) , recordable compact discs (CD-R) , rewritable compact discs (CD-RW) , read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM) , a variety of recordable / rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc. ) , flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc. ) , magnetic and / or solid state hard drives, read-only and recordable discs, ultra-density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
[0128] While the above discussion primarily refers to microprocessor or multi-core processors that execute software, many of the above-described features and applications are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) . In some embodiments, such integrated circuits execute instructions that are stored on the circuit itself. In addition, some embodiments execute software stored in programmable logic devices (PLDs) , ROM, or RAM devices.
[0129] As used in this specification and any claims of this application, the terms “computer” , “server” , “processor” , and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium, ” “computer readable media, ” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.
[0130] While the present disclosure has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the present disclosure can be embodied in other specific forms without departing from the spirit of the present disclosure. In addition, a number of the figures (including FIG. 4 and FIG. 7) conceptually illustrate processes. The specific operations of these processes may not be performed in the exact order shown and described. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, the process could be implemented using several sub-processes, or as part of a larger macro process. Thus, one of ordinary skill in the art would understand that the present disclosure is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims. Additional Notes
[0131] The herein-described subject matter sometimes illustrates different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely examples, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively "associated" such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as "associated with" each other such that the desired functionality is achieved, irrespective of architectures or intermediate components. Likewise, any two components so associated can also be viewed as being "operably connected" , or "operably coupled" , to each other to achieve the desired functionality, and any two components capable of being so associated can also be viewed as being "operably couplable" , to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and / or physically interacting components and / or wirelessly interactable and / or wirelessly interacting components and / or logically interacting and / or logically interactable components.
[0132] Further, with respect to the use of substantially any plural and / or singular terms herein, those having skill in the art can translate from the plural to the singular and / or from the singular to the plural as is appropriate to the context and / or application. The various singular / plural permutations may be expressly set forth herein for sake of clarity.
[0133] Moreover, it will be understood by those skilled in the art that, in general, terms used herein, and especially in the appended claims, e.g., bodies of the appended claims, are generally intended as “open” terms, e.g., the term “including” should be interpreted as “including but not limited to, ” the term “having” should be interpreted as “having at least, ” the term “includes” should be interpreted as “includes but is not limited to, ” etc. It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases "at least one" and "one or more" to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim recitation to implementations containing only one such recitation, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an, " e.g., “a” and / or “an” should be interpreted to mean “at least one” or “one or more; ” the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should be interpreted to mean at least the recited number, e.g., the bare recitation of "two recitations, " without other modifiers, means at least two recitations, or two or more recitations. Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc. ” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention, e.g., “a system having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and / or A, B, and C together, etc. In those instances where a convention analogous to “at least one of A, B, or C, etc. ” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention, e.g., “a system having at least one of A, B, or C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and / or A, B, and C together, etc. It will be further understood by those within the art that virtually any disjunctive word and / or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase “A or B” will be understood to include the possibilities of “A” or “B” or “A and B. ”
[0134] From the foregoing, it will be appreciated that various implementations of the present disclosure have been described herein for purposes of illustration, and that various modifications may be made without departing from the scope and spirit of the present disclosure. Accordingly, the various implementations disclosed herein are not intended to be limiting, with the true scope and spirit being indicated by the following claims.
Claims
1.A video coding method comprising:receiving data to be encoded or decoded as a current block of pixels of a current picture of a video, the current block having at least one chroma component, wherein the current block is divided into a plurality of subblocks;generating a first prediction of the chroma component by using cross-component predictions associated with a first subblock;generating a second prediction of the chroma component;generating a combined prediction of the chroma component based on the first and second predictions; andencoding or decoding the current block by using the combined prediction of the chroma component.2.The video coding method of claim 1, wherein the second prediction of the chroma component is generated without using cross-component prediction.3.The video coding method of claim 1, wherein the first prediction of the chroma component is generated by predicting a subblock using the subblock’s own one or more cross-component models.4.The video coding method of claim 3, wherein the one or more cross-component model of the subblock is derived for the subblock by using a reference region that is determined for the subblock.5.The video coding method of claim 1, wherein at least one of the one or more cross-component models of a subblock of the current block is referenced for coding a subsequent block.6.The video coding method of claim 1, wherein each subblock is transformed or inverse transformed using the subblock’s own transform mode.7.The video coding method of claim 1, wherein the current block is coded by referencing a block of pixels in the current picture by using a block vector.8.The video coding method of claim 1, wherein the current block is coded by referencing a block of pixels in another picture by using a motion vector.9.The video coding method of claim 1, wherein the cross-component prediction associated with the current block uses the cross-component model associated with any of cross-component linear model (CCLM) , multi-model linear model (MMLM) , convolutional cross-component model (CCCM) , gradient linear model (GLM) , chroma fusion, cross-component prediction (CCP) merge mode, and inter-CCCM.10.The video coding method of claim 1, wherein a syntax element is signaled or parsed to indicate whether (i) a combined prediction, (ii) a cross-component prediction, or (iii) a non-cross-component prediction is used to encode or decode the chroma component of the current block.11.The video coding method of claim 1, wherein the second prediction of the chroma component is generated by predicting a second subblock using the second subblock’s own one or more cross-component models.12.An electronic apparatus comprising:a video coder circuit configured to perform operations comprising:receiving data to be encoded or decoded as a current block of pixels of a current picture of a video, the current block having at least one chroma component, wherein the current block is divided into a plurality of subblocks;generating a first prediction of the chroma component by using cross-component predictions associated with a first subblock;generating a second prediction of the chroma component;generating a combined prediction of the chroma component based on the first and second predictions; andencoding or decoding the current block by using the combined prediction of the chroma component.13.A video decoding method comprising:receiving data to be decoded as a current block of pixels of a current picture of a video, the current block having at least one chroma component, wherein the current block is divided into a plurality of subblocks;generating a first prediction of the chroma component by using cross-component predictions associated with a first subblock;generating a second prediction of the chroma component;generating a combined prediction of the chroma component based on the first and second predictions;reconstructing the current block by using the combined prediction of the chroma component; andoutputting the reconstructed current block.