Intra coding information based on cascaded vector for video coding

Cascaded vectors in video coding enhance intra coding prediction accuracy and efficiency by deriving intra coding information from motion and block vectors, addressing inefficiencies in existing standards.

WO2025153044A1PCT designated stage expired Publication Date: 2025-07-24MEDIATEK INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2025/072921
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-01-17
Filing Date
2025-01-17
Publication Date
2025-07-24

AI Technical Summary

Technical Problem

Existing video coding standards like HEVC and VVC face challenges in efficiently utilizing intra coding information for pixel blocks, particularly in deriving accurate intra prediction modes and residual coding, which affects compression efficiency.

Method used

The use of cascaded vectors derived from motion and block vectors to obtain intra coding information, including intra prediction modes and residual coding, by recursively tracing vectors and inheriting information from reference blocks.

Benefits of technology

Improves the accuracy of intra coding prediction and enhances coding performance by utilizing cascaded vectors to derive intra coding information, leading to more efficient video compression.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025072921_24072025_PF_FP_ABST
    Figure CN2025072921_24072025_PF_FP_ABST
Patent Text Reader

Abstract

A method for using cascaded vectors to obtain intra coding information for coding a current block of a current picture of a video is provided. A video coder derives one or more cascaded vectors. Each cascaded vector is derived as a sum of recursively traced motion vectors and block vectors based on a base vector that is a motion vector or block vector of the current block or of a neighboring block. The video coder inherits intra coding information from a reference block that is indicated by at least one of the derived cascaded vectors. The video coder encodes or decodes the current block by applying the intra coding information. The intra coding information is applied to create a most probable intra prediction mode list for the current block, or used for generating a prediction of the current block, or used in coding a prediction residual of the current block.
Need to check novelty before this filing date? Find Prior Art

Description

INTRA CODING INFORMATION BASED ON CASCADED VECTOR FOR VIDEO CODINGCROSS 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 / 621,643 filed on 17 January 2024. Contents of above-listed applications are 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 obtaining intra coding information based on cascaded vectors.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.

[0008] 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.SUMMARY

[0009] 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.

[0010] Some embodiments of the disclosure provide a method for using cascaded vectors to obtain intra coding information for coding a current block of a current picture of a video. A video coder derives one or more cascaded vectors. Each cascaded vector is derived as a sum of recursively traced motion vectors and block vectors based on a base vector that is a motion vector or block vector of the current block or of a neighboring block. The video coder inherits intra coding information from a reference block that is indicated by at least one of the derived cascaded vectors. The video coder encodes or decodes the current block by applying the intra coding information.

[0011] The video coder may derive one or more cascaded vectors based on one motion vector or block vector of the current block or of the neighboring block. The motion vector or the block vector used as the base vector may be selected from among center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The selected position may be pre-defined, implicitly selected based on the current block size or neighboring block coding information or prediction mode of the current block, or explicitly indicated. The neighboring block from which the base vector may be obtained may be one of an adjacent neighboring block, a spatial non-adjacent neighboring block, a block from a previously coded picture, or a block stored in a historical list. In some embodiments, the base vector may be selected from a candidate list including one or more motion vectors or block vectors from the current block or one or more previously coded blocks.

[0012] The intra coding information may include any of: intra prediction mode for luma or chroma samples, intra prediction reference line index, most probable intra prediction modes (MPMs) , information about the coding tool which may directly or indirectly refer to at least one intra coding syntax (for example, selected transform kernels along the horizontal and vertical direction, selected filter for reference sample smoothing, selected post-filter for prediction sample smoothing, selected filter for reference sample interpolation, and block size or area) .

[0013] The inherited intra coding information may be selected from among intra coding information of multiple reference blocks that are indicated by more than one derived cascaded vectors. In some embodiments, the inherited intra coding information may be selected according to a priority that is determined based on a prediction mode of the current block, a temporal reference picture distance from the current picture, a quantization parameter, a spatial distance between the current block and the reference block, or a trace depth of the derived cascaded vector indicating the reference block.

[0014] The intra coding information may be applied to create a most probable intra prediction mode list for the current block, or used for generating a prediction of the current block, or used in coding a prediction residual of the current block. For example, the video coder may apply the intra coding information by applying a transform kernel along the horizontal or vertical direction inherited from the reference block to encode or decode a prediction residual of the current block.

[0015] In some embodiments, the video coder stores intra information for referencing by subsequent coded blocks. For example, when the current block is coded by intra-prediction, the video coder may store a first intra coding information used to encode the current block and a second intra coding information indicated by at least one of the derived cascaded vectors. For another example, when the current block is not coded by intra-prediction, the video coder may store an intra coding information of a neighboring block indicated by at least one of the derived cascaded vectors. In some embodiments, when the current block has no motion vector or block vector, more than one cascaded vectors derived from the motion vectors or block vectors of one or more previously coded neighboring blocks are used to obtain more than one intra coding information to be stored for the current block for referencing by a subsequently coded block.BRIEF DESCRIPTION OF THE DRAWINGS

[0016] 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.

[0017] FIG. 1 illustrates 67 intra predictions modes, including 65 directional or angular intra prediction modes.

[0018] FIG. 2 conceptually illustrates derivation of auto-relocated block vector.

[0019] FIG. 3 conceptually illustrates the positions to be checked for deriving auto-relocated block vector.

[0020] FIG. 4 shows an example derivation of a candidate for chained MV prediction (CMVP) .

[0021] FIG. 5 illustrates possible sources of a base vector for CMVP.

[0022] FIG. 6 shows a cascaded vector being the sum of motion vectors and block vectors.

[0023] FIG. 7 conceptually illustrates using multiple cascaded vectors to obtain multiple intra coding information from multiple reference blocks  / previously coded blocks.

[0024] FIG. 8 illustrates an example video encoder that may implement cascaded vectors.

[0025] FIG. 9 illustrates portions of the video encoder that implement using cascaded vectors to obtain and use intra coding information.

[0026] FIG. 10 conceptually illustrates a process for using cascaded vectors to obtain intra coding information when encoding pixel blocks.

[0027] FIG. 11 illustrates an example video decoder may implement cascaded vectors.

[0028] FIG. 12 illustrates portions of the video decoder that implement using cascaded vectors to obtain and use intra coding information.

[0029] FIG. 13 conceptually illustrates a process for using cascaded vectors to obtain intra coding information when decoding pixel blocks.

[0030] FIG. 14 conceptually illustrates an electronic system with which some embodiments of the present disclosure are implemented.DETAILED DESCRIPTION

[0031] 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. Intra coding information

[0032] The definition of “intra coding information” in this document includes (but not limited to) intra prediction mode (or angle) for luma or chroma samples, intra prediction reference line index, most probable intra prediction modes (MPMs) , information about the coding tool which may directly or indirectly refer to at least one intra coding syntax (for example, selected transform kernels along the horizontal and vertical direction, selected filter for reference sample smoothing, selected post-filter for prediction sample smoothing, selected filter for reference sample interpolation, block size or area, etc) .

[0033] The intra coding information may be applied to create a most probable intra prediction mode list for the current block, or used for generating a prediction of the current block, or used in coding a prediction residual of the current block. For example, the video coder may apply the intra coding information by applying a transform kernel along the horizontal or vertical direction inherited from the reference block to encode or decode a prediction residual of the current block. Intra coding information such as intra-prediction angle and block size may be used to select a transform kernel, or used to determine whether to perform reference sample smoothing, or to apply post-filtering upon the current intra block.

[0034] A. Intra Prediction Modes and MPMs

[0035] 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 67) . Some intra-prediction modes (e.g., 3 or 5) are identified as a set of most probable modes (MPM) for intra-prediction in current prediction block so an index may be signaled to select one of the MPMs. FIG. 1 illustrates 67 intra predictions modes, including 65 directional or angular intra prediction modes (from 2 to 66) . II. Cascaded Vector Prediction

[0036] A. Auto Relocated Block Vector Prediction (AR-BVP)

[0037] Auto-relocated block vector prediction (AR-BVP) is part of IBC merge / AMVP candidate list construction. FIG. 2 conceptually illustrates derivation of auto-relocated block vector. As illustrated, for a current picture 600, a guiding block vector BV0, 1 associated with the current block B0 points to a reference block B1. If B1 has a BV denoted as BV1, 2 pointing to a reference block B2, then BV0, 2, given by BV0, 2 = BV0, 1 +BV1, 2, is defined as the AR-BVP, guided by BV0, 1. Similarly, BV0, n+1 can be derived by

[0038] BV0, n+1 =BV0, n+BVn, n+1 = BV0, 1+BV1, 2 +…+BVn-1, n +BVn, n+1.

[0039] In some embodiments, the length of the AR-BVP trace path is 1 (i.e., n=1) . In some embodiments, the length of the AR-BVP trace path is 2 (i.e., n=2) . In some embodiments, there is no constraint for the length of the AR-BVP trace path.

[0040] FIG. 3 conceptually illustrates the positions to be checked for deriving auto-relocated block vector. As illustrated, when deriving BVn, n+1 guided by BV0, n, all five positions including top-left ( “LT” ) , top-right ( “RT” ) , center ( “Ctr” ) , bottom-left ( “LB” ) , and bottom-right ( “RB” ) positions of Bn may be checked to find BVn, n+1. In some embodiments, the initial guiding block vector BV0, 1 is set to be an existing BVP already in the IBC merge / AMVP candidate list. In some embodiments, the AR-BVP candidates may be inserted after historical BVP candidates. The IBC merge / AMVP candidate list size may be kept unchanged.

[0041] B. Chained Motion Vector Prediction (CMVP)

[0042] In some embodiments, a chained MV prediction (CMVP) is included in the inter merge candidate list construction. FIG. 4 shows an example derivation of a candidate for chained MV prediction (CMVP) . As illustrated, CMVP candidates can be derived as the sum of the recursively traced MVs and BVs based on the pre-derived MVs for the inter merge candidate list. The illustrates a CMVP candidate that is a motion vectors MVL0k / m locating a block in a reference picture a RefPicL0k / m. The motion vector and the reference picture are determined according to: MVL0k / m = MVL0k (0) + BVk (0) + MVL0k (1) +MVL0k (2) + …+ MVL0k (m) , RefPicL0k / m = RefPicL0k (m)

[0043] More generally, for a CMVP candidate, a set of motion vectors MVk / m in a reference picture RefPick / m can be derived by MVk / m = MVk (0) + BVk (0) + MVk (1) +MVk (2) + …+ MVk (m) , RefPick / m = RefPick (m) ,

[0044] where k and m indicate the number of merge index and trace depths of the CMVP.

[0045] FIG. 5 illustrates the possible sources of a base vector for CMVP. The figure shows the operations of referencing source and destination of tracing MVs in CMVP. As illustrated, when deriving MVk / m, MVk (0) (also referred to as the base vector of the CMVP) is found by checking the existence of MVs or BVs in MV / BV storage corresponding to all five positions of the current block (i.e., the Ctr, TL, TR, BL, and BR of the current block) . In the example, a MV that is found in the MV / BV storage corresponding to the center position of the current block, and that MV is used as MVL0k (0) or base vector of the CMVP.

[0046] When pre-derived merge candidates targeting CMVP candidates has two MVs, a MVk / m is derived for each list (i.e., L0 and L1) and each trace depth. Up to two MVs can be derived for each list and each trace depth, and the MV set is sequentially inserted into inter merge candidate list. The traceable reference pictures are only within the reference picture list. CMVP candidates may be inserted after HMVP candidates for the regular merge and TM merge. When deriving CMVP candidates, hpelIfIdx, bcwIdx, licFlag, and mhpFlag may not be inherited. CMVP candidates may not be derived when the TMVP is disabled.

[0047] C. Creating Cascaded Vectors for Obtaining Intra coding information

[0048] A cascaded vector is derived as the sum of the recursively traced motion vectors and block vectors based on a base vector. A cascade vector can be derived with the following steps: (1) Starting from a base vector. A base vector can be obtained through methods described  above. (2) For the i-th recursion: (a) Locate a block based on a cascaded vector CV (i-1) (b) Retrieve a vector from a block. This vector can be a L0 motion vector, a L1 motion vector or a  block vector. Denote this vector as V (i) (c) One more cascaded vector is derived as CV (i) = CV (i-1) + V (i) = CV (0) + V (1) + V (2) + …+  V (i)

[0049] The Steps 2 (a) -2 (c) is repeated for each recursion. For the first recursion, CV (0) is the base vector. FIG. 6 show that a cascaded vector can be the sum of motion vectors and block vectors. As illustrated, the base vector is the L0 motion vector of the current block or a neighboring block 610. In the figure, the L0 motion vector of the current block 610 is denoted as MVL0 (0) . The block vector of the block 620 indicated by MVL0 (0) is denoted as BV (0) , and the L0 motion vector of the block 630 indicated by BV (0) is denoted as MVL0 (1) and so on. The cascaded vector MV_m is then: MV_m = MVL0_m = MVL0 (0) + BV (0) + MVL0 (1) + …+ MVL0 (m)

[0050] And the reference picture of MVL0_m is: RefPicL0_m = RefPicL0 (m)

[0051] Here m is the trace depth, that is the number of reference picture referenced traced back. In some embodiments, the trace depth m can be a finite value, for example, m = 1. The trace depth m can also be infinite. The trace depth m can be pre-defined.

[0052] In some embodiments, the vector retrieved in Step 2 (b) is the L0 motion vector of the block if the block is inter-coded. In some embodiments, the vector retrieved in Step 2 (b) is the L1 motion vector of the block if the block is inter-coded. In some embodiments the vector retrieved in Step 2 (b) is the block vector of the block. In some embodiments, the vector retrieved in Step 2 (b) can only be a motion vector. In some embodiments, the vector retrieved in Step 2 (b) can be a motion vector or a block vector.

[0053] In some embodiments, for each recursion, multiple new cascaded vectors can be derived at Step 2 (c) , if multiple motion vectors and / or multiple block vectors can be retrieved from the block in Step 2 (b) . The multiple newly derived cascaded vectors can all be the vector used in Step 2 (a) in the next recursion. For example, assume the block indicated by MVL0 (1) is bi-prediction and has two motion vector MVL0 (2) and MVL1 (2) . Two new cascaded vectors can be derived as MV_1 + MVL0 (2) and MV_1 + MVL1 (2) , where MV_1 = MVL0 (0) + BV (0) + MVL0 (1) . Each new cascaded vector can be fed into the next recursion as the cascaded vector in Step 2. Hence two branches of recursion can start. In some embodiment, in Step 2 (c) , a new cascaded vector is only created if V (i) retrieved in Step 2 (b) is a motion vector.

[0054] D. Obtain intra coding information by Cascaded Vectors

[0055] In some embodiments, when referring the intra coding information (as described in Section I above) from previously coded neighboring blocks, if the previously coded neighboring block has valid / available motion vector or block vector, cascaded vectors may be derived based on the motion vector or the block vector of the previous coded neighboring block (s) .

[0056] In some embodiments, one or more cascaded vectors may be derived based on base vector (s) that is / are the motion vector or the block vector of the current block or of one or more previously coded neighboring block (s) . The derived cascaded vector (s) may be used to indicate previously coded block (s) (or reference blocks) from which to obtain intra coding information for use by the current block.

[0057] In some embodiments, intra coding information of the previously coded neighboring blocks indicated by the cascaded vectors can be inherited by or applied to the current block to be used in creating the most probable intra prediction mode list of the current block, used in predicting the current block, or used in coding the residual of the current block. For example, in some embodiments, these previously coded neighboring blocks can be from but not limited to spatial adjacent neighboring blocks, spatial non-adjacent neighboring blocks, blocks from previously coded pictures, or blocks stored in a historical list. For another example, in some embodiments, the cascaded vector is derived based on the motion vector or the block vector of the neighboring block (s) of the current block. For another example, in some embodiments, a candidate list is created to collect intra coding information from neighboring blocks, with one of candidates in the list chosen to inherit the intra coding information (e.g., intra prediction mode, or reference line index) to predict the current block. For still another example, in some embodiments, when coding the residual of the current block, the selected transform kernels along the horizontal and vertical direction can be inherited or derived from the neighboring blocks indicated by the cascaded vector. For still another example, in some embodiments, when creating the most probable intra prediction mode list of the current block, if the neighboring block is coded in non-intra prediction mode, the cascaded vector of the neighboring block is used to find the intra coding information of another previous coded block. For still another example, in some embodiments, even if a previous coded block has intra coding information, another intra coding information from another previous coded block can be identify by the cascaded vectors created using the motion vector or block vector of the previous coded block.

[0058] E. Obtain Multiple Intra coding information by Cascaded Vectors

[0059] In some embodiments, if the current block has two or more motion vectors or block vectors available, multiple cascaded vectors can be derived based on the pre-defined or explicit indicated motion vector or the block vector of the current block. The current block can inherit or apply the intra coding information indicated by the cascade vector derived using the motion vectors or block vectors of the current block. For example, in each recursion, multiple cascaded vectors can be derived if the based block has multiple motion vectors or multiple block vectors.

[0060] FIG. 7 conceptually illustrates using multiple cascaded vectors to obtain multiple intra coding information from multiple reference blocks  / previously coded blocks. As illustrated, a current block 710 has a MV 711 and a BV 715 (associated with different positions in the current block) that are used as base vectors for deriving cascaded vectors 751-753. In addition, a previously block 720 neighboring the current block has a MV 721 that is used as a base vector for deriving cascaded vectors 754-756. The cascaded vectors 751-756 can be used to obtain intra coding information from reference blocks 761-766 for coding the current block 710.

[0061] In some embodiments, to obtain the intra coding information located by the cascade vector, the motion vectors or block vectors selected from the center, top-left, top-right, bottom-left, and bottom-right positions of the current block can be used to derive cascaded vectors. The motion vectors or block vectors selection rule can be pre-defined, implicitly selected based on the current block size / neighboring block coding information / prediction mode of the current block, or explicitly indicated. The starting position of the derived cascaded vectors can be from the center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The starting position of the derived cascaded vectors can be pre-defined, implicitly selected based on the current block size / neighboring block coding information / prediction mode of the current block, or explicitly indicated.

[0062] In some embodiments, to create cascaded vector, a base MV candidate list is firstly created to contain many available motion vectors and / or block vectors from the current block, neighboring blocks, or previous coded blocks. Then, one or more than one candidate in the list can be used to create one or more than one cascade vector to further get intra coding information. The candidate list can be generated following the methods of generating an IntraTMP candidate list or a MMVD candidate list. In some embodiments, the candidate list can be generated following the method of generating a merge candidate list (e.g., an inter merge candidate list, an IBC merge candidate list, a template matching merge candidate list, a bilateral matching merge candidate list, a CIIP-TM merge candidate list, or an affine merge candidate list, etc. ) In some embodiments, the candidate list can be generated following the method of generating an MVP list. For example, the candidate list can be generated following the method of generating an MVP list of AMVP mode.

[0063] When selecting the intra coding information to be inherited or applied to the current block, the selection priority may depend on the temporal reference picture distance, quantization parameter, spatial distance, or trace distance. For example, in some embodiments, if the current block is coded by intra prediction, the current intra coding information is assigned higher or the highest selection priority. For another example, in some embodiments, if the intra coding information is retrieved based on a cascaded vector, the priority can be determined based on the trace depth of the cascaded vector. The shorter the trace depth is, the higher the priority is for the intra coding information. For still another example, in some embodiments, the intra coding information corresponding to the reference block whose reference picture has the smaller picture order count (POC) distance to the current picture has higher priority.

[0064] For still another example, in some embodiments, the intra coding information corresponding to the reference block whose reference picture has the smaller QP difference from the current picture has higher priority. For still another example, in some embodiments, the intra coding information corresponding to the reference block whose reference picture has the smaller QP value has higher priority. In some embodiments, the intra coding information corresponding to the reference block whose reference picture has the larger QP values has higher priority.

[0065] For still another example, in some embodiments, if the reference block locates at the same picture as the current block, the intra coding information corresponding to the reference block whose distance to the current block is the smallest has higher priority. The distance between the reference block and the current block, located at (xr, yr) and (xc, yc) respectively, can be computed by Euclidean distance, Manhattan Distance, Minkowski distance, or Chebyshev distance, where (xr, yr) and (xc, yc) can be the top-left, top-right, bottom-left, bottom-right, or center positions of the reference block and the current block. For still another example, if the reference block locates at the same picture as the current block, the intra coding information corresponding to the reference block which has the smallest horizontal distance, |xr -xc|, has higher priority. For still another example, in some embodiments, if the reference block locates at the same picture as the current block, the intra coding information corresponding to the reference block which has the smallest vertical distance, |yr -yc|, has higher priority. For some embodiments, the rules described in the above examples can be combined, and not all the rules described previously need to be applied.

[0066] F. Storing Multiple Intra coding information by Cascaded Vectors

[0067] To reduce the required computation in deriving cascaded vectors, in some embodiments, after reconstructing the current block at encoder side or decoder side, the intra coding information of the current block is derived and stored for the current block. In some embodiments, more than one intra coding information can be stored in the current block or the corresponding buffer segment / unit. In some embodiments, if the current block has motion vector or block vector available and the current block is coded with intra prediction, in addition to storing the intra coding information used by the current block, the intra coding information of the reference block located by the cascaded vector can also be stored for the current block for future referencing. If the current block is not coded in intra prediction, the intra coding information of the neighboring block located by the cascaded vector can also be stored for the current block for future referencing. In some embodiments, if the current block is coded in intra prediction mode without having motion vector or block vector, multiple cascaded vectors derived from the motion vector or block vector of the previous coded neighboring blocks may be used to obtain more than one intra coding information to store for the current block for future referencing.

[0068] In some embodiments, the maximum number of intra coding information allowed to be stored for one block can be pre-defined. If the available number of intra coding information exceeds the maximum allowed number or allowed buffer size, the priority of the intra coding information to be stored can be pre-defined. For example, in some embodiments, if the current block is intra coded, the current intra coding information has the highest priority. For another example, in some embodiments, the priority can be determined based on the trace depth of the cascaded vector. The shorter the trace depth is, the higher the priority is for the intra coding information. For some embodiments, the above rules can be combined.

[0069] The foregoing proposed methods are proposed to improve the luma / chroma intra coding prediction accuracy or coding performance. In one embodiment, whether to allow or apply the proposed methods can depend on SPS / PPS / SH / PH syntax, or CTU or CU / PU / TU level syntax or semantic. In another embodiment, whether to allow or apply the proposed methods can also depend on implicit conditions. For example, the proposed methods can be applied based on block width, block height, or block area. In another embodiment, the proposed method can be conditionally applied to partial positions / sub-block of the current block. In another embodiment, the term “block” in this invention can refer to coding unit (CU)  / coding block (CB) , prediction unit (PU)  / prediction block (PB) , transform unit (TU)  / transform block (TB) , a corresponding block with the same size of the current block, pre-defined region, or CTU / CTB. Any combination of the proposed methods in this invention can be applied.

[0070] The foregoing proposed methods can be implemented in encoders and / or decoders. For example, the proposed method can be implemented in an in-loop filtering module of an encoder, and / or an in-loop filtering module of a decoder. III. Example Video Encoder

[0071] FIG. 8 illustrates an example video encoder 800 that may implement cascaded vectors. As illustrated, the video encoder 800 receives input video signal from a video source 805 and encodes the signal into bitstream 895. The video encoder 800 has several components or modules for encoding the signal from the video source 805, at least including some components selected from a transform module 810, a quantization module 811, an inverse quantization module 814, an inverse transform module 815, an intra-picture estimation module 824, an intra-prediction module 825, a motion compensation module 830, a motion estimation module 835, an in-loop filter 845, a reconstructed picture buffer 850, a MV buffer 865, and a MV prediction module 875, and an entropy encoder 890. The motion compensation module 830 and the motion estimation module 835 are part of an inter-prediction module 840. The intra-prediction module 825 and the intra-prediction estimation module 824 are part of a current picture prediction module 820, which uses current picture reconstructed samples as reference samples for prediction of the current block.

[0072] In some embodiments, the modules 810 –890 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 810 –890 are modules of hardware circuits implemented by one or more integrated circuits (ICs) of an electronic apparatus. Though the modules 810 –890 are illustrated as being separate modules, some of the modules can be combined into a single module.

[0073] The video source 805 provides a raw video signal that presents pixel data of each video frame without compression. A subtractor 808 computes the difference between the raw video pixel data of the video source 805 and the predicted pixel data 813 from the motion compensation module 830 or intra-prediction module 825 as prediction residual 809. The transform module 810 converts the difference (or the residual pixel data or residual signal 808) into transform coefficients (e.g., by performing Discrete Cosine Transform, or DCT) . The quantization module 811 quantizes the transform coefficients into quantized data (or quantized coefficients) 812, which is encoded into the bitstream 895 by the entropy encoder 890.

[0074] The inverse quantization module 814 de-quantizes the quantized data (or quantized coefficients) 812 to obtain transform coefficients 818, and the inverse transform module 815 performs inverse transform on the transform coefficients 818 to produce reconstructed residual 819. The reconstructed residual 819 is added with the predicted pixel data 813 to produce reconstructed pixel data 817. In some embodiments, the reconstructed pixel data 817 is temporarily stored in a line buffer 827 (or intra prediction buffer) for intra-picture prediction and spatial MV prediction. The reconstructed pixels are filtered by the in-loop filter 845 and stored in the reconstructed picture buffer 850. In some embodiments, the reconstructed picture buffer 850 is a storage external to the video encoder 800. In some embodiments, the reconstructed picture buffer 850 is a storage internal to the video encoder 800.

[0075] The intra-picture estimation module 824 performs intra-prediction based on the reconstructed pixel data 817 to produce intra prediction data. The intra-prediction data is provided to the entropy encoder 890 to be encoded into bitstream 895. The intra-prediction data is also used by the intra-prediction module 825 to produce the predicted pixel data 813.

[0076] The motion estimation module 835 performs inter-prediction by producing MVs to reference pixel data of previously decoded frames stored in the reconstructed picture buffer 850. These MVs are provided to the motion compensation module 830 to produce predicted pixel data.

[0077] Instead of encoding the complete actual MVs in the bitstream, the video encoder 800 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 895.

[0078] The MV prediction module 875 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 875 retrieves reference MVs from previous video frames from the MV buffer 865. The video encoder 800 stores the MVs generated for the current video frame in the MV buffer 865 as reference MVs for generating predicted MVs.

[0079] The MV prediction module 875 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 895 by the entropy encoder 890.

[0080] The entropy encoder 890 encodes various parameters and data into the bitstream 895 by using entropy-coding techniques such as context-adaptive binary arithmetic coding (CABAC) or Huffman encoding. The entropy encoder 890 encodes various header elements, flags, along with the quantized transform coefficients 812, and the residual motion data as syntax elements into the bitstream 895. The bitstream 895 is in turn stored in a storage device or transmitted to a decoder over a communications medium such as a network.

[0081] The in-loop filter 845 performs filtering or smoothing operations on the reconstructed pixel data 817 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 845 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.

[0082] FIG. 9 illustrates portions of the video encoder 800 that implement using cascaded vectors to obtain and use intra coding information. Intra coding information may be used to configure or otherwise affect the operations of prediction coding modules 910, residual generation modules 920, and / or the in-loop filters 845. The prediction coding modules 910 may refer to the intra-prediction 820, inter-prediction module 840, current picture prediction (or IBC) , and / or other coding tools that are used to generate the predicted pixel data 813. The residual generation modules 920 may refer to the transform module 810, the quantization module 820, the inverse quantization module 814, the inverse transform module 815, and / or other modules that are used to generate the reconstructed residual 819.

[0083] An intra coding information fetching module 930 provide the intra coding information. Examples of intra coding information used to configure the prediction coding modules 910 may include intra prediction mode for luma or chroma samples, intra prediction reference line index, most probable intra prediction modes (MPMs) . Examples of intra coding information may include information about the coding tool which may directly or indirectly refer to at least one intra coding syntax (for example, selected transform kernels along the horizontal and vertical direction, block size or area, selected filter for reference sample smoothing, selected post-filter for prediction sample smoothing, selected filter for reference sample interpolation, etc) .

[0084] The intra coding information fetching module 930 fetches the intra coding information from an intra coding information storage 935, which stores intra coding information that are used for coding previous blocks. The intra coding information fetching module 930 determines which intra coding information to fetch based on cascaded vectors provided by the vector cascade module 950. The vector cascaded module 950 may generate several cascaded vectors based on one or more base vectors, specifically by performing step 1 and recursive steps 2 (a) -2 (c) described in Section II. C above. Multiple cascaded vectors may locate multiple intra coding information from multiple reference blocks, and the intra coding information fetching module 930 may select among them based on priority rules described in Section II. E above. The base vectors may be taken from motion vectors and / or block vectors of the current block and / or previously coded neighboring blocks.

[0085] FIG. 10 conceptually illustrates a process 1000 for using cascaded vectors to obtain intra coding information when encoding pixel blocks. In some embodiments, one or more processing units (e.g., a processor) of a computing device implementing the encoder 800 performs the process 1000 by executing instructions stored in a computer readable medium. In some embodiments, an electronic apparatus implementing the encoder 800 performs the process 1000.

[0086] The encoder receives (at block 1010) data to be encoded as a current block of pixels in a current picture. The encoder derives (at block 1020) one or more cascaded vectors. Each cascaded vector is derived as a sum of recursively traced motion vectors and block vectors based on a base vector that is a motion vector or block vector of the current block or of a neighboring block. The encoder may derive multiple cascaded vectors based on one motion vector or block vector of the current block or the neighboring block.

[0087] The motion vector or the block vector used as the base vector may be selected from among center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The selected position may be pre-defined, implicitly selected based on the current block size or neighboring block coding information or prediction mode of the current block, or explicitly indicated. The neighboring block from which the base vector may be obtained may be one of an adjacent neighboring block, a spatial non-adjacent neighboring block, a block from a previously coded picture, or a block stored in a historical list. In some embodiments, the base vector may be selected from a candidate list including one or more motion vectors or block vectors from the current block or one or more previously coded blocks.

[0088] The encoder inherits (at block 1030) intra coding information from a reference block that is indicated by at least one of the derived cascaded vectors. The intra coding information may include any of: intra prediction mode for luma or chroma samples, intra prediction reference line index, most probable intra prediction modes (MPMs) , selected transform kernels along the horizontal and vertical direction, selected filter for reference sample smoothing, selected post-filter for prediction sample smoothing, selected filter for reference sample interpolation, and block size or area.

[0089] The inherited intra coding information may be selected from among intra coding information of multiple reference blocks that are indicated by more than one derived cascaded vectors. In some embodiments, the inherited intra coding information may be selected according to a priority that is determined based on a prediction mode of the current block, a temporal reference picture distance from the current picture, a quantization parameter, a spatial distance between the current block and the reference block, or a trace depth of the derived cascaded vector indicating the reference block.

[0090] The encoder encodes (at block 1040) the current block by applying the intra coding information. The intra coding information may be applied to create a most probable intra prediction mode list for the current block, or used for generating a prediction of the current block, or used in coding a prediction residual of the current block. For example, the encoder may apply the intra coding information by applying a transform kernel along the horizontal or vertical direction inherited from the reference block to encode a prediction residual of the current block. For another example, intra prediction angle may be used to select a transform kernel for LFNST operations, or used to determine whether to perform reference sample smoothing. Intra-prediction angle and block size may be used to determine whether to apply post-filtering (e.g., PDPC) upon the current intra block.

[0091] In some embodiments, the encoder stores intra information for referencing by subsequent coded blocks. For example, when the current block is coded by intra-prediction, the encoder may store a first intra coding information used to encode the current block and a second intra coding information indicated by at least one of the derived cascaded vectors. For another example, when the current block is not coded by intra-prediction, the encoder may store an intra coding information of a neighboring block indicated by at least one of the derived cascaded vectors. In some embodiments, when the current block has no motion vector or block vector, more than one cascaded vectors derived from the motion vectors or block vectors of one or more previously coded neighboring blocks are used to obtain more than one intra coding information to be stored for the current block for referencing by a subsequently coded block. IV. Example Video Decoder

[0092] 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.

[0093] FIG. 11 illustrates an example video decoder 1100 may implement cascaded vectors. As illustrated, the video decoder 1100 is an image-decoding or video-decoding circuit that receives a bitstream 1195 and decodes the content of the bitstream into pixel data of video frames for display. The video decoder 1100 has several components or modules for decoding the bitstream 1195, including some components selected from an inverse quantization module 1114, an inverse transform module 1115, an intra-prediction module 1125, a motion compensation module 1130, an in-loop filter 1145, a decoded picture buffer 1150, a MV buffer 1165, a MV prediction module 1175, and a parser 1190. The motion compensation module 1130 is part of an inter-prediction module 1140. The intra-prediction module 1125 is part of a current picture prediction module 1120, which uses current picture reconstructed samples as reference samples for prediction of the current block.

[0094] In some embodiments, the modules 1114 –1190 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 1114 –1190 are modules of hardware circuits implemented by one or more ICs of an electronic apparatus. Though the modules 1114 –1190 are illustrated as being separate modules, some of the modules can be combined into a single module.

[0095] The parser 1190 (or entropy decoder) receives the bitstream 1195 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) 1112. The parser 1190 parses out the various syntax elements by using entropy-coding techniques such as context-adaptive binary arithmetic coding (CABAC) or Huffman encoding.

[0096] The inverse quantization module 1114 de-quantizes the quantized data (or quantized coefficients) 1112 to obtain transform coefficients, and the inverse transform module 1115 performs inverse transform on the transform coefficients 1118 to produce reconstructed residual signal 1119. The reconstructed residual signal 1119 is added with predicted pixel data 1113 from the intra-prediction module 1125 or the motion compensation module 1130 to produce decoded pixel data 1117. The decoded pixels data are filtered by the in-loop filter 1145 and stored in the decoded picture buffer 1150. In some embodiments, the decoded picture buffer 1150 is a storage external to the video decoder 1100. In some embodiments, the decoded picture buffer 1150 is a storage internal to the video decoder 1100.

[0097] The intra-prediction module 1125 receives intra-prediction data from bitstream 1195 and according to which, produces the predicted pixel data 1113 from the decoded pixel data 1117 stored in the decoded picture buffer 1150. In some embodiments, the decoded pixel data 1117 is also stored in a line buffer 1127 (or intra prediction buffer) for intra-picture prediction and spatial MV prediction.

[0098] In some embodiments, the content of the decoded picture buffer 1150 is used for display. A display device 1105 either retrieves the content of the decoded picture buffer 1150 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 1150 through a pixel transport.

[0099] The motion compensation module 1130 produces predicted pixel data 1113 from the decoded pixel data 1117 stored in the decoded picture buffer 1150 according to motion compensation MVs (MC MVs) . These motion compensation MVs are decoded by adding the residual motion data received from the bitstream 1195 with predicted MVs received from the MV prediction module 1175.

[0100] The MV prediction module 1175 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 1175 retrieves the reference MVs of previous video frames from the MV buffer 1165. The video decoder 1100 stores the motion compensation MVs generated for decoding the current video frame in the MV buffer 1165 as reference MVs for producing predicted MVs.

[0101] The in-loop filter 1145 performs filtering or smoothing operations on the decoded pixel data 1117 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 1145 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.

[0102] FIG. 12 illustrates portions of the video decoder 1100 that implement using cascaded vectors to obtain and use intra coding information. Intra coding information may be used to configure or otherwise affect the operations of prediction coding modules 1210, residual generation modules 1220, and / or the in-loop filters 1145. The prediction coding modules 1210 may refer to the intra-prediction 1120, inter-prediction module 1140, current picture prediction (or IBC) , and / or other coding tools that are used to generate the predicted pixel data 1113. The residual generation modules 1220 may refer to the inverse quantization module 1114, the inverse transform module 1115, and / or other modules that are used to generate the reconstructed residual 1119.

[0103] An intra coding information fetching module 1230 provide the intra coding information. Examples of intra coding information used to configure the prediction coding modules 1210 may include intra prediction mode for luma or chroma samples, intra prediction reference line index, most probable intra prediction modes (MPMs) . Examples of intra coding information may include selected transform kernels along the horizontal and vertical direction, block size or area, selected filter for reference sample smoothing, selected post-filter for prediction sample smoothing, selected filter for reference sample interpolation, etc.

[0104] The intra coding information fetching module 1230 fetches the intra coding information from an intra coding information storage 1235, which stores intra coding information that are used for coding previous blocks. The intra coding information fetching module 1230 determines which intra coding information to fetch based on cascaded vectors provided by the vector cascade module 1250. The vector cascaded module 1250 may generate several cascaded vectors based on one or more base vectors, specifically by performing step 1 and recursive steps 2 (a) -2 (c) described in Section II. C above. Multiple cascaded vectors may locate multiple intra coding information from multiple reference blocks, and the intra coding information fetching module 1230 may select among them based on priority rules described in Section II. E above. The base vectors may be taken from motion vectors and / or block vectors of the current block and / or previously coded neighboring blocks.

[0105] FIG. 13 conceptually illustrates a process 1300 for using cascaded vectors to obtain intra coding information when decoding pixel blocks. In some embodiments, one or more processing units (e.g., a processor) of a computing device implementing the decoder 1100 performs the process 1300 by executing instructions stored in a computer readable medium. In some embodiments, an electronic apparatus implementing the decoder 1100 performs the process 1300.

[0106] The decoder receives (at block 1310) data to be decoded as a current block of pixels in a current picture. The decoder derives (at block 1320) one or more cascaded vectors. Each cascaded vector is derived as a sum of recursively traced motion vectors and block vectors based on a base vector that is a motion vector or block vector of the current block or of a neighboring block. The decoder may derive multiple cascaded vectors based on one motion vector or block vector of the current block or the neighboring block.

[0107] The motion vector or the block vector used as the base vector may be selected from among center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The selected position may be pre-defined, implicitly selected based on the current block size or neighboring block coding information or prediction mode of the current block, or explicitly indicated. The neighboring block from which the base vector may be obtained may be one of an adjacent neighboring block, a spatial non-adjacent neighboring block, a block from a previously coded picture, or a block stored in a historical list. In some embodiments, the base vector may be selected from a candidate list including one or more motion vectors or block vectors from the current block or one or more previously coded blocks.

[0108] The decoder inherits (at block 1330) intra coding information from a reference block that is indicated by at least one of the derived cascaded vectors. The intra coding information may include any of: intra prediction mode for luma or chroma samples, intra prediction reference line index, most probable intra prediction modes (MPMs) , selected transform kernels along the horizontal and vertical direction, selected filter for reference sample smoothing, selected post-filter for prediction sample smoothing, selected filter for reference sample interpolation, and block size or area.

[0109] The inherited intra coding information may be selected from among intra coding information of multiple reference blocks that are indicated by more than one derived cascaded vectors. In some embodiments, the inherited intra coding information may be selected according to a priority that is determined based on a prediction mode of the current block, a temporal reference picture distance from the current picture, a quantization parameter, a spatial distance between the current block and the reference block, or a trace depth of the derived cascaded vector indicating the reference block.

[0110] The decoder reconstructs (at block 1340) the current block by applying the intra coding information. The intra coding information may be applied to create a most probable intra prediction mode list for the current block, or used for generating a prediction of the current block, or used in coding a prediction residual of the current block. For example, the decoder may apply the intra coding information by applying a transform kernel along the horizontal or vertical direction inherited from the reference block to decode a prediction residual of the current block. For another example, intra prediction angle may be used to select a transform kernel for LFNST operations, or used to determine whether to perform reference sample smoothing. Intra-prediction angle and block size may be used to determine whether to apply post-filtering (e.g., PDPC) upon the current intra block.

[0111] In some embodiments, the decoder stores intra information for referencing by subsequent coded blocks. For example, when the current block is coded by intra-prediction, the decoder may store a first intra coding information used to decode the current block and a second intra coding information indicated by at least one of the derived cascaded vectors. For another example, when the current block is not coded by intra-prediction, the decoder may store an intra coding information of a neighboring block indicated by at least one of the derived cascaded vectors. In some embodiments, when the current block has no motion vector or block vector, more than one cascaded vectors derived from the motion vectors or block vectors of one or more previously coded neighboring blocks are used to obtain more than one intra coding information to be stored for the current block for referencing by a subsequently coded block. The decoder may then provide the reconstructed current block for display as part of the reconstructed current picture. V. Example Electronic System

[0112] 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.

[0113] 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.

[0114] FIG. 14 conceptually illustrates an electronic system 1400 with which some embodiments of the present disclosure are implemented. The electronic system 1400 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 1400 includes a bus 1405, processing unit (s) 1410, a graphics-processing unit (GPU) 1415, a system memory 1420, a network 1425, a read-only memory 1430, a permanent storage device 1435, input devices 1440, and output devices 1445.

[0115] The bus 1405 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 1400. For instance, the bus 1405 communicatively connects the processing unit (s) 1410 with the GPU 1415, the read-only memory 1430, the system memory 1420, and the permanent storage device 1435.

[0116] From these various memory units, the processing unit (s) 1410 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 1415. The GPU 1415 can offload various computations or complement the image processing provided by the processing unit (s) 1410.

[0117] The read-only-memory (ROM) 1430 stores static data and instructions that are used by the processing unit (s) 1410 and other modules of the electronic system. The permanent storage device 1435, 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 1400 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 1435.

[0118] 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 1435, the system memory 1420 is a read-and-write memory device. However, unlike storage device 1435, the system memory 1420 is a volatile read-and-write memory, such a random access memory. The system memory 1420 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 1420, the permanent storage device 1435, and / or the read-only memory 1430. 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) 1410 retrieves instructions to execute and data to process in order to execute the processes of some embodiments.

[0119] The bus 1405 also connects to the input and output devices 1440 and 1445. The input devices 1440 enable the user to communicate information and select commands to the electronic system. The input devices 1440 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 1445 display images generated by the electronic system or otherwise output data. The output devices 1445 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.

[0120] Finally, as shown in FIG. 14, bus 1405 also couples electronic system 1400 to a network 1425 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 1400 may be used in conjunction with the present disclosure.

[0121] 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.

[0122] 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.

[0123] 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.

[0124] 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. 10 and FIG. 13) 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

[0125] 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.

[0126] 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.

[0127] 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. ”

[0128] 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;deriving one or more cascaded vectors, each cascaded vector derived as a sum of recursively traced motion vectors and block vectors based on a base vector that is a motion vector or block vector of the current block or of a previously coded neighboring block;inheriting intra coding information from a reference block that is indicated by at least one of the derived cascaded vectors; andencoding or decoding the current block by applying the intra coding information.2.The video coding method of claim 1, wherein the intra coding information is applied to create a most probable intra prediction mode list for the current block, or used for generating a prediction of the current block, or used in coding a prediction residual of the current block.3.The video coding method of claim 1, wherein the intra coding information comprise any of: intra prediction mode for luma or chroma samples, intra prediction reference line index, most probable intra prediction modes (MPMs) , selected transform kernels along the horizontal and vertical direction, selected filter for reference sample smoothing, selected post-filter for prediction sample smoothing, selected filter for reference sample interpolation, and block size or area.4.The video coding method of claim 1, wherein the previously coded neighboring block is one of an adjacent neighboring block, a spatial non-adjacent neighboring block, a block from a previously coded picture, or a block stored in a historical list.5.The video coding method of claim 1, wherein one or more cascaded vectors are derived based on one motion vector or block vector of the current block or of the neighboring block.6.The video coding method of claim 1, wherein applying the intra coding information comprises applying a transform kernel along the horizontal or vertical direction inherited from the reference block to encode or decode a prediction residual of the current block.7.The video coding method of claim 1, wherein the motion vector or the block vector used as the base vector is selected from among center, top-left, top-right, bottom-left, and bottom-right positions of the current block.8.The video coding method of claim 7, wherein the selected position is implicitly selected based on a size of the current block.9.The video coding method of claim 1, wherein the base vector is selected from a candidate list comprising one or more motion vectors or block vectors from the current block or one or more previously coded blocks.10.The video coding method of claim 1, wherein the inherited intra coding information is selected from among intra coding information of multiple reference blocks that are indicated by more than one derived cascaded vectors.11.The video coding method of claim 10, wherein the inherited intra coding information is selected according to a priority that is determined based on a prediction mode of the current block, a temporal reference picture distance from the current picture, a quantization parameter, a spatial distance between the current block and the reference block, or a trace depth of the derived cascaded vector indicating the reference block.12.The video coding method of claim 1, further comprising, when the current block is coded by intra-prediction, storing a first intra coding information used to encoded or decode the current block and a second intra coding information indicated by at least one of the derived cascaded vectors, the stored intra coding information for referencing by a subsequently coded block.13.The video coding method of claim 12, further comprising, when the current block is not coded by intra-prediction, storing an intra coding information of a neighboring block indicated by at least one of the derived cascaded vectors, the stored intra coding information for referencing by a subsequently coded block.14.The video coding method of claim 12, further comprising, when the current block has no motion vector or block vector, more than one cascaded vectors derived from the motion vectors or block vectors of one or more previously coded neighboring blocks are used to obtain more than one intra coding information to be stored for the current block for referencing by a subsequently coded block.15.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;deriving one or more cascaded vectors, each cascaded vector derived as a sum of recursively traced motion vectors and block vectors based on a base vector that is a motion vector or block vector of the current block or of a previously coded neighboring block;inheriting intra coding information from a reference block that is indicated by at least one of the derived cascaded vectors; andencoding or decoding the current block by applying the intra coding information.16.A video decoding method comprising:receiving data to be decoded as a current block of pixels of a current picture of a video;deriving one or more cascaded vectors, each cascaded vector derived as a sum of recursively traced motion vectors and block vectors based on a base vector that is a motion vector or block vector of the current block or of a previously coded neighboring block;inheriting intra coding information from a reference block that is indicated by at least one of the derived cascaded vectors; andreconstructing the current block by applying the intra coding information.17.A video encoding method comprising:receiving data to be encoded as a current block of pixels of a current picture of a video;deriving one or more cascaded vectors, each cascaded vector derived as a sum of recursively traced motion vectors and block vectors based on a base vector that is a motion vector or block vector of the current block or of a previously coded neighboring block;inheriting intra coding information from a reference block that is indicated by at least one of the derived cascaded vectors; andencoding the current block by applying the intra coding information.

Citation Information

Patent Citations

  • Methods and systems for intra block copy coding with block vector derivation

    CN106576178A

  • Intra-frame prediction mode coding and decoding method, device and equipment

    CN111294602A

  • Method for decoding / encoding video signal and a readable storage medium

    CN111343459A

  • Video Compression Using Template-Based Determination of Intra Prediction Mode

    US20230336718A1