Intra-frame encoding / decoding information based on concatenated vectors for video encoding / decoding

CN122580852APending Publication Date: 2026-08-14MEDIATEK INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-01-17
Publication Date
2026-08-14

Smart Images

  • Figure CN122580852A_ABST
    Figure CN122580852A_ABST
Patent Text Reader

Abstract

This invention provides a method for obtaining intra-frame coding / decoding information for the current block of a video image using concatenated vectors. The video codec derives one or more concatenated vectors. Each concatenated vector is derived based on the sum of motion vectors and block vectors recursively traced by a base vector, which is either the motion vector or block vector of the current block or a neighboring block. The video codec inherits intra-frame coding / decoding information from a reference block indicated by at least one derived concatenated vector. The video codec encodes or decodes the current block by applying the intra-frame coding / decoding information. The intra-frame coding / decoding information can be used to create a list of the most probable intra-frame prediction modes for the current block, or to generate predictions for the current block, or to encode / decode the prediction residuals for the current block.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Related citations This invention is a non-provisional application of U.S. Provisional Patent Application No. 63 / 621,643 (filed January 17, 2024), and claims priority thereto. The aforementioned U.S. Provisional Patent Application is incorporated herein by reference in its entirety. Technical Field

[0002] This disclosure generally relates to video encoding and decoding. Specifically, this disclosure relates to a method for encoding and decoding pixel blocks by obtaining intra-frame encoding and decoding information based on concatenated vectors. Background Technology

[0003] Unless otherwise stated herein, the methods described in this section are not prior art to the claims listed below, nor are those not included in this section but are recognized as prior art.

[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 a hybrid block-based motion-compensated DCT transform coding architecture. The basic unit of compression, called a coding unit (CU), is a 2Nx2N square pixel block. Each CU can be recursively divided into four smaller CUs until a predetermined minimum size is reached. Each CU contains one or more prediction units (PUs).

[0005] Versatile video coding (VVC) is the latest international video coding standard developed by the Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11. The input video signal is predicted from a reconstructed signal derived from the codec image region. The prediction residual signal is processed through block transform. The transform coefficients, along with other auxiliary information in the bitstream, are quantized and entropy-encoded. The reconstructed signal is generated based on the prediction signal and the reconstructed residual signal after inverse transform of the dequantized transform coefficients. The reconstructed signal is further processed by loop filtering to remove coding artifacts. The decoded image is stored in a frame buffer and used to predict future images in the input video signal.

[0006] In VVC, the encoded / decoded image is divided into non-overlapping square block regions represented by associated coding tree units (CTUs). The encoded / decoded image can be represented by a set of segments, each containing an integer number of CTUs. The individual CTUs within a segment are processed sequentially using raster scans. Intra-predictive or inter-predictive frames can be used to decode bi-predictive (B) segments, where at most two motion vectors (MVs) and a reference index are used to predict the sample values ​​for each block. Predictive (P) segments are decoded using intra-predictive or inter-predictive frames with at most one motion vector and a reference index to predict the sample values ​​for each block. Intra (I) segments are decoded using only intra-predictive pairs.

[0007] For each inter-frame prediction CU, motion parameters, consisting of motion vectors, reference image indices, and reference image lists using indices, along with additional information, are used for inter-frame prediction sample generation. Motion parameters can be sent explicitly or implicitly. When a CU is encoded / decoded in skip mode, the CU is associated with a PU and has no significant residual coefficients; no encoded / decoded motion vector increments or reference image indices are used. A merge mode is specified where the motion parameters for the current CU are obtained from neighboring CUs, including spatial and temporal candidates, as well as additional scheduling introduced in the VVC. The merge mode can be applied to any inter-frame prediction CU. An alternative to the merge mode is explicit transmission of motion parameters, where motion vectors, the corresponding reference image indices for each reference image list, and the reference image lists using flags, along with other necessary information, are explicitly sent per CU.

[0008] Intra-block copy (IBC) or current picture referencing (CPR) encodes and decodes pixel blocks by using block vectors to reference pixel positions within the same current image as the current block. Summary of the Invention

[0009] The following overview is illustrative only and is not intended to be restrictive in any way. That is, the following overview is provided to introduce the concepts, highlights, benefits, and advantages of the novel and non-obvious techniques described herein. Selected, but not all, implementations are further described in the detailed description below. Therefore, the following overview is not intended to identify the essential features of the claimed subject matter, nor is it intended to determine the scope of the claimed subject matter.

[0010] Some embodiments of this disclosure provide a method for using concatenated vectors to obtain intra-frame coding / decoding information for encoding / decoding the current block of a current image of a video. A video codec derives one or more concatenated vectors. Each concatenated vector is derived based on a base vector, as the sum of a recursively traced motion vector and a block vector, where the base vector is the motion vector or block vector of the current block or a neighboring block. The video codec inherits intra-frame coding / decoding information from a reference block indicated by at least one derived concatenated vector. The video codec encodes or decodes the current block by applying the intra-frame coding / decoding information.

[0011] A video codec can derive one or more concatenated vectors based on a motion vector or block vector of the current block or neighboring blocks. The motion vector or block vector used as the basis vector can be selected from the center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The selected positions can be predefined, implicitly selected based on the size of the current block or the codec information of neighboring blocks or the prediction mode of the current block, or explicitly indicated. The neighboring blocks from which the basis vector can be derived can be adjacent neighboring blocks, spatially non-adjacent neighboring blocks, blocks from previously codec images, or blocks stored in a history list. In some embodiments, the basis vector can be selected from a candidate list containing one or more motion vectors or block vectors from the current block or one or more previously codec blocks.

[0012] Intra-frame coding information may include any of the following: intra-frame prediction mode of luma or chroma samples, intra-frame prediction reference line index, most probable intra-frame prediction mode (MPM), information about coding tools that may directly or indirectly reference at least one intra-frame coding syntax (e.g., transform kernels selected along the horizontal and vertical directions, filters selected for reference sample smoothing, post-filters selected for prediction sample smoothing, filters selected for reference sample interpolation, and block size or area).

[0013] Inherited intra-frame codec information can be selected from intra-frame codec information of multiple reference blocks indicated by multiple derived concatenated vectors. In some embodiments, the inherited intra-frame codec information can be selected according to priority determined based on the prediction mode of the current block, the temporal reference image distance to the current image, quantization parameters, the spatial distance between the current block and the reference blocks, or the tracking depth of the derived concatenated vectors indicating the reference blocks.

[0014] Intra-frame encoding / decoding information can be used to create a list of the most probable intra-frame prediction modes for the current block, or to generate predictions for the current block, or to encode / decode the prediction residuals for the current block. For example, a video codec can apply intra-frame encoding / decoding information by applying a transform kernel inherited from a reference block along the horizontal or vertical direction to encode or decode the prediction residuals for the current block.

[0015] In some embodiments, the video codec stores intra-frame information for reference in subsequent code blocks. For example, when the current block is encoded using intra-frame prediction, the video codec may store first intra-frame encoding information for encoding the current block, and second intra-frame encoding information indicated by at least one derived concatenated vector. As another example, when the current block is not encoded using intra-frame prediction, the video codec may store intra-frame encoding information for neighboring blocks indicated by at least one derived concatenated vector. In some embodiments, when the current block has no motion vectors or block vectors, more than one concatenated vector is used to obtain more than one set of intra-frame encoding information derived from the motion vectors or block vectors of one or more previously encoded neighboring blocks; this information is stored for reference in the current block in subsequent code blocks. Attached Figure Description

[0016] The accompanying drawings are included to provide a further understanding of the present disclosure and are incorporated in and constitute a part of this disclosure. The drawings illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the present disclosure. It should be noted that the drawings are not necessarily drawn to scale, as in actual implementations certain components may be shown out of proportion to clearly illustrate the concepts of the present disclosure.

[0017] Figure 1 It shows 67 intra-frame prediction modes, including 65 intra-frame prediction modes of direction or angle.

[0018] Figure 2 This paper conceptually demonstrates the derivation of the automatic relocation block vector.

[0019] Figure 3 This conceptually demonstrates the locations that need to be checked when deriving the automatic relocation block vector.

[0020] Figure 4 This section demonstrates an example of deriving candidate vectors for chained motion vector prediction (CMVP).

[0021] Figure 5 This demonstrates the possible sources of CMVP basis vectors.

[0022] Figure 6 The cascaded vector is the sum of the motion vector and the block vector.

[0023] Figure 7 This conceptually demonstrates how to use multiple concatenated vectors to obtain multiple intra-frame encoding / decoding information from multiple reference blocks / previously encoded / decoded blocks.

[0024] Figure 8 This demonstrates an example video encoder that can implement cascaded vectors.

[0025] Figure 9 This demonstrates the various parts of a video encoder that use cascaded vectors to acquire and utilize intra-frame codec information.

[0026] Figure 10 This conceptually demonstrates the process of using concatenated vectors to obtain intra-frame encoding / decoding information when encoding pixel blocks.

[0027] Figure 11 A conceptual example video decoder that enables cascaded vectors is presented.

[0028] Figure 12 This demonstrates the various parts of a video decoder that use concatenated vectors to acquire and utilize intra-frame encoding / decoding information.

[0029] Figure 13 This conceptually illustrates the process of using concatenated vectors to obtain intra-frame encoding / decoding information when decoding pixel blocks.

[0030] Figure 14 An electronic system that implements some embodiments of the present disclosure is conceptually illustrated. Detailed Implementation

[0031] In the following detailed description, numerous specific details are illustrated by way of example in order to provide a thorough understanding of the teachings herein. Any variations, derivatives, and / or extensions based on the teachings described herein are within the scope of this disclosure. In some cases, well-known methods, processes, components, and / or circuits relating to one or more exemplary embodiments disclosed herein may be described at a relatively high level without detail to avoid unnecessarily obscuring aspects of the teachings of this disclosure.

[0032] I. Intra-frame encoding and decoding information The definition of "intra-frame codec information" in this document includes (but is not limited to) the intra-frame prediction mode (or angle) of the luminance or chrominance sample, the intra-frame prediction reference line index, the most likely intra-frame prediction mode (MPM), and codec tool information that may directly or indirectly reference at least one intra-frame codec syntax (e.g., transform kernels selected along the horizontal and vertical directions, filters selected for reference sample smoothing, post-filters selected for prediction sample smoothing, filters selected for reference sample interpolation, block size or area, etc.).

[0033] Intra-frame encoding / decoding information can be used to create a list of the most probable intra-frame prediction modes for the current block, to generate predictions for the current block, or to encode / decode the prediction residuals of the current block. For example, a video codec can apply intra-frame encoding / decoding information by applying a transform kernel inherited from a reference block along the horizontal or vertical direction to encode or decode the prediction residuals of the current block. Intra-frame encoding / decoding information (such as intra-frame prediction angle and block size) can be used to select a transform kernel, or to determine whether to perform reference sample smoothing, or whether to apply post-filtering to the current intra-frame block.

[0034] A. Intra-frame prediction mode and MPM Intra-prediction methods utilize one or more reference lines adjacent to the current prediction unit (PU) and one of the intra-prediction modes to generate the prediction value for the current PU. Intra-prediction directions can be selected from a mode set containing multiple prediction directions, DC modes, and planar modes. An intra-prediction mode can also refer to any intra-prediction mode that uses spatial reconstruction samples to determine the prediction value of the current block. The number of directional intra-prediction modes can be 33 or extended to 65. By including DC and planar modes, the number of intra-prediction modes is 35 (or 67). Some intra-prediction modes (e.g., 3 or 5) are identified as a set of most probable modes (MPMs) for intra-prediction in the current prediction block, and an index can be sent to select one of the MPMs. Figure 1 Sixty-seven intra-frame prediction modes are shown, including 65 directional or angular intra-frame prediction modes (from 2 to 66).

[0035] II. Cascaded Vector Prediction A. Automatic Relocation Block Vector Prediction (AR-BVP) Automatic relocation block vector prediction (AR-BVP) is part of the IBC merging / AMVP candidate list construction. Figure 2 The derivation process of the automatic relocation block vector is conceptually illustrated. As shown in the figure, for the current image 600, the starting block vector BV0,1 associated with the current block B0 points to the reference block B1. If B1 has a BV pointing to the reference block B2, denoted as BV1,2, 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 using the following formula: BV0,n+1=BV0,n+BVn,n+1=BV0,1+BV1,2+…+BVn-1,n +BVn,n+1.

[0036] In some embodiments, the length of the AR-BVP tracking path is 1 (i.e., n=1). In some embodiments, the length of the AR-BVP tracking path is 2 (i.e., n=2). In some embodiments, there is no limit to the length of the AR-BVP tracking path.

[0037] Figure 3 The diagram conceptually illustrates the locations to be checked for deriving the automatic relocation block vector. As shown, when BVn,n+1 is derived from BV0,n, all five locations of Bn can be checked, including top left (“LT”), top right (“RT”), center (“Ctr”), bottom left (“LB”), and bottom right (“RB”), to find BVn,n+1. In some embodiments, the initial guiding block vector BV0,1 is set to an existing BVP in the IBC merge / AMVP candidate list. In some embodiments, AR-BVP candidates can be inserted after historical BVP candidates. The size of the IBC merge / AMVP candidate list can remain unchanged.

[0038] B. Chained Motion Vector Prediction (CMVP) In some embodiments, chained motion vector prediction (CMVP) is included in the construction of the inter-frame merging candidate list. Figure 4 An example derivation of Chained Motion Vector Prediction (CMVP) candidates is shown. As illustrated, CMVP candidates can be derived from the sum of recursively traced motion vectors (MVs) and inter-frame vectors (BVs) based on a pre-derived motion vector (MV) from an inter-frame merge candidate list. The figure shows a CMVP candidate, MVL0k / m, used to locate a block in the reference image RefPicL0k / m. This motion vector and the reference image are determined by the following formula: MVL0k / m = MVL0k(0) + BVk(0) + MVL0k(1) +MVL0k(2) + … + MVL0k(m), RefPicL0k / m = RefPicL0k(m) More generally, for a CMVP candidate, a set of motion vectors MVk / m in the reference image RefPick / m can be derived as follows: MVk / m = MVk(0) + BVk(0) + MVk(1) +MVk(2) + … + MVk(m), RefPick / m = RefPick(m), Where k and m represent the number of merged indexes and the tracking depth of the CMVP, respectively.

[0039] Figure 5 This diagram illustrates the possible sources of the CMVP basis vectors. It shows the operations of referencing the source and target of the tracking motion vector (MV) in a CMVP. As shown, when deriving MVk / m, MVk(0) (also known as the CMVP basis vector) is found by checking if there exists a motion vector (MV) or block vector (BV) in the MV / BV storage corresponding to all five positions of the current block (i.e., Ctr, TL, TR, BL, and BR of the current block). In this example, the motion vector (MV) found in the MV / BV storage corresponding to the center position of the current block is used as the basis vector for MVL0k(0) or the CMVP.

[0040] When the pre-exported merge candidate for a CMVP candidate has two MVs, one MVk / m is exported for each list (i.e., L0 and L1) and each tracking depth. A maximum of two MVs can be exported per list and per tracking depth, and the MV sets are sequentially inserted into the inter-frame merge candidate list. Trackable reference images are only present in the reference image list. For regular merge and TM merge, CMVP candidates can be inserted after HMVP candidates. When exporting CMVP candidates, hpelIfIdx, bcwIdx, licFlag, and mhpFlag cannot be inherited. When TMVP is disabled, CMVP candidates may not be exported.

[0041] C. Create a concatenated vector for obtaining intra-frame encoding / decoding information. The concatenated vector is derived from the sum of the motion vector and the block vector in a recursive tracking process based on basis vectors. The concatenated vector can be derived through the following steps: (1) Start with the basis vectors. The basis vectors can be obtained using the method described above.

[0042] (2) For the i-th recursion: (a) Locating blocks based on cascaded vector CV(i-1) (b) Obtain a vector from the block. This vector can be an L0 motion vector, an L1 motion vector, or a block vector. This vector is denoted as V(i).

[0043] (c) Derive another concatenated vector, which has the form CV(i) = CV(i-1) + V(i) = CV(0) + V(1) + V(2) + … + V(i) Each recursion repeats steps 2(a)-2(c). For the first recursion, CV(0) is the basis vector. Figure 6This indicates that the cascade vector can be the sum of the motion vector and the block vector. As shown in the figure, the basis vector is the L0 motion vector of the current block or the adjacent block 610. In the figure, the L0 motion vector of the current block 610 is represented as MVL0(0). The block vector of block 620 indicated by MVL0(0) is represented as BV(0), the L0 motion vector of block 630 indicated by BV(0) is represented as MVL0(1), and so on. Then the cascade vector MV_m is: MV_m = MVL0_m = MVL0(0) + BV(0) + MVL0(1) + … + MVL0(m) And the reference image for MVL0_m is: RefPicL0_m = RefPicL0(m) Here, m is the tracking depth, i.e., the number of reference images traced back. In some embodiments, the tracking depth m can be a finite value, such as m = 1. The tracking depth m can also be infinite. The tracking depth m can be predefined.

[0044] In some embodiments, if the block is encoded via inter-frame decoding, the vector obtained in step 2(b) is the L0 motion vector of that block. In some embodiments, if the block is encoded via inter-frame decoding, the vector obtained in step 2(b) is the L1 motion vector of that block. In some embodiments, the vector obtained in step 2(b) is the block vector of that block. In some embodiments, the vector obtained in step 2(b) can only be a motion vector. In some embodiments, the vector obtained in step 2(b) can be either a motion vector or a block vector.

[0045] In some embodiments, for each recursion, if multiple motion vectors and / or multiple block vectors can be obtained from the block in step 2(b), multiple new concatenated vectors can be derived in step 2(c). These newly derived concatenated vectors can all be used as vectors in the next recursion in step 2(a). For example, suppose the block indicated by MVL0(1) is a bidirectional prediction and has two motion vectors MVL0(2) and MVL1(2). Two new concatenated vectors can be derived, namely MV_1+MVL0(2) and MV_1+MVL1(2), where MV_1 = MVL0(0) + BV(0) + MVL0(1). Each new concatenated vector can be used as the concatenated vector input in step 2 to the next recursion. Thus, two recursive branches can be started. In some embodiments, in step 2(c), a new concatenated vector is created only if V(i) obtained in step 2(b) is a motion vector.

[0046] D. Obtaining intra-frame encoding / decoding information through concatenated vectors. In some embodiments, when referring to the intra-frame encoding and decoding information of a previously encoded neighboring block (as described in Section 1 above), if the previously encoded neighboring block has valid / available motion vectors or block vectors, the concatenated vector can be derived from the motion vectors or block vectors of the previously encoded neighboring block.

[0047] In some embodiments, one or more concatenated vectors can be derived based on a basis vector, which is the motion vector or block vector of the current block or one or more previously encoded neighboring blocks. The derived concatenated vectors can be used to indicate previously encoded blocks (or reference blocks) from which intra-frame encoding and decoding information used by the current block can be obtained.

[0048] In some embodiments, intra-codec information of previously encoded neighboring blocks indicated by the concatenated vector can be inherited or applied to the current block to create a list of most probable intra-prediction modes for the current block, to predict the current block, or to encode the residual of the current block. For example, in some embodiments, these previously encoded neighboring blocks may come from (but are not limited to) spatially adjacent neighboring blocks, spatially non-adjacent neighboring blocks, blocks from previously encoded images, or blocks stored in a history list. As another example, in some embodiments, the concatenated vector is derived based on the motion vectors or block vectors of the current block's neighboring blocks. As another example, in some embodiments, a candidate list is created to collect intra-codec information from neighboring blocks, and a candidate is selected from the list to inherit intra-codec information (e.g., intra-prediction modes or reference line indices) to predict the current block. As another example, in some embodiments, when encodes and decodes the residual of the current block, the transform kernel selected along the horizontal and vertical directions can be inherited or derived from the neighboring blocks indicated by the concatenated vector. For example, in some embodiments, when creating a list of the most likely intra-prediction modes for the current block, if a neighboring block is encoded in a non-intra-prediction mode, the concatenated vectors of the neighboring blocks are used to look up intra-codec information for another previously encoded block. For example, in some embodiments, even if a previous encoded block has intra-codec information, additional intra-codec information from another previous encoded block can be identified using a concatenated vector created from the motion vectors or block vectors of the previous encoded block.

[0049] E. Obtaining multiple intra-frame encoding / decoding information through concatenated vectors. In some embodiments, if the current block has two or more available motion vectors or block vectors, multiple concatenated vectors can be derived based on the motion vectors or block vectors of the current block, which are predetermined or explicitly indicated. The current block can inherit or apply intra-frame encoding / decoding information indicated by the concatenated vectors derived using the motion vectors or block vectors of the current block. For example, in each recursion, if the base block has multiple motion vectors or multiple block vectors, multiple concatenated vectors can be derived.

[0050] Figure 7 This conceptually illustrates how multiple concatenated vectors can be used to obtain intra-frame encoding / decoding information from multiple reference blocks / previously encoded blocks. As shown, the current block 710 has a motion vector 711 and a block vector 715 (associated with different positions within the current block), which serve as the basis vectors for deriving concatenated vectors 751-753. Furthermore, the previous block 720 adjacent to the current block has a motion vector 721, which serves as the basis vector for deriving concatenated vectors 754-756. Concatenated vectors 751-756 can be used to obtain intra-frame encoding / decoding information from reference blocks 761-766, thereby encoding the current block 710.

[0051] In some embodiments, to obtain the intra-frame codec information located by the concatenated vector, the concatenated vector can be derived using a motion vector or block vector selected from the center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The selection rules for the motion vector or block vector can be predefined, implicitly selected based on the current block size / adjacent block codec information / prediction mode, or explicitly indicated. The starting position of the derived concatenated vector can begin from the center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The starting position of the derived concatenated vector can be predefined, implicitly selected based on the current block size / adjacent block codec information / prediction mode, or explicitly indicated.

[0052] In some embodiments, to create concatenated vectors, a basic motion vector (MV) candidate list is first created, containing multiple available motion vectors and / or block vectors from the current block, neighboring blocks, or previous codec blocks. Then, one or more candidates from the list can be used to create one or more concatenated vectors to further obtain intra-frame codec information. This candidate list can be generated using methods for generating IntraTMP (IntraMotion Vector) candidate lists or IntraMotion Vector (MMVD) candidate lists. In some embodiments, this candidate list can be generated using methods for generating merge candidate lists (e.g., inter-frame merge candidate lists, IBC merge candidate lists, template matching merge candidate lists, bilateral matching merge candidate lists, CIIP-TM merge candidate lists, or affine merge candidate lists, etc.). In some embodiments, this candidate list can be generated using methods for generating MVP lists. For example, this candidate list can be generated using methods for generating MVP lists in AMVP mode.

[0053] When selecting intra-frame codec information to inherit or apply to the current block, the selection priority can depend on temporal reference image distance, quantization parameters, spatial distance, or tracking distance. For example, in some embodiments, if the current block is obtained via intra-frame predictive coding, the current intra-frame codec information is assigned a higher or highest selection priority. As another example, in some embodiments, if intra-frame codec information is obtained based on concatenated vectors, the priority can be determined based on the tracking depth of the concatenated vectors. The shorter the tracking depth, the higher the priority of the intra-frame codec information. As yet another example, in some embodiments, intra-frame codec information corresponding to a reference block has a higher priority if its reference image has a smaller image sequence count (POC) distance from the current image.

[0054] For example, in some embodiments, the intra-frame codec information corresponding to the reference block has a smaller QP difference between the reference image and the current image, and therefore has higher priority. In other embodiments, the intra-frame codec information corresponding to the reference block has a smaller QP value for the reference image, and therefore has higher priority. In some embodiments, the intra-frame codec information corresponding to the reference block has a larger QP value for the reference image, and therefore has higher priority.

[0055] For example, in some embodiments, if a reference block and the current block are located in the same image, the intra-frame encoding / decoding information corresponding to the reference block that is closest to the current block has higher priority. The reference block and the current block are respectively located in (x... r , y r ) and (x c , y c The distance (x) can be calculated using Euclidean distance, Manhattan distance, Minkowski distance, or Chebyshev distance, where (x) r , y r ) and (x c , y c The reference block and the current block can be located at their top-left, top-right, bottom-left, bottom-right, or center positions. For example, if the reference block and the current block are located in the same image, then the horizontal distance |x| is used. r - x c The intra-frame encoding / decoding information corresponding to the smallest reference block has higher priority. For example, in some embodiments, if the reference block and the current block are located in the same image, then the vertical distance |y... r -y c The intra-frame encoding / decoding information corresponding to the smallest reference block has higher priority. In some embodiments, the rules described in the above examples can be used in combination, without having to apply all the previously described rules.

[0056] F. Storing multiple intra-frame encoding / decoding information via concatenated vectors. To reduce the computational cost of deriving concatenated vectors, in some embodiments, after reconstructing the current block at the encoder or decoder end, the intra-codec information of the current block is derived and stored for use in the current block. In some embodiments, multiple intra-codec information entries may be stored in the current block or a corresponding buffer segment / cell. In some embodiments, if the current block has available motion vectors or block vectors, and the current block uses intra-predictive coding / decoding, in addition to storing the intra-codec information used by the current block, the intra-codec information of a reference block located by the concatenated vectors may also be stored for future reference. If the current block does not use intra-predictive coding / decoding, the intra-codec information of neighboring blocks located by the concatenated vectors may be stored for future reference. In some embodiments, if the current block is coded / decoded in intra-predictive mode without motion vectors or block vectors, more than one intra-codec information entry may be obtained using multiple concatenated vectors derived from the motion vectors or block vectors of previously coded neighboring blocks, and stored for future reference in the current block.

[0057] In some embodiments, the maximum amount of intra-codec information that can be stored in a block can be predefined. If the amount of available intra-codec information exceeds the maximum allowed amount or the allowed buffer size, the priority of the intra-codec information to be stored can be predefined. For example, in some embodiments, if the current block is intra-codec, the current intra-codec information has the highest priority. As another example, in some embodiments, priority can be determined based on the tracking depth of the concatenated vectors. The shorter the tracking depth, the higher the priority of the intra-codec information. In some embodiments, the above rules can be combined.

[0058] The aforementioned methods aim to improve the prediction accuracy or encoding / decoding performance of intra-frame luma / chroma encoding / decoding. In one embodiment, whether the proposed method is allowed or applied depends on the SPS / PPS / SH / PH syntax, or the CTU or CU / PU / TU level syntax or semantics. In another embodiment, whether the proposed method is allowed or applied may also depend on implicit conditions. For example, the proposed method can be applied based on block width, block height, or block area. In another embodiment, the proposed method can be conditionally applied to a portion of the current block / sub-block. In yet another embodiment, the term "block" in this invention can refer to a codec unit (CU) / codec block (CB), prediction unit (PU) / prediction block (PB), transform unit (TU) / transform block (TB), a corresponding block of the same size as the current block, a predetermined region, or a CTU / CTB. Any combination of the methods proposed in this invention can be applied.

[0059] The proposed method can be implemented in the encoder and / or decoder. For example, the proposed method can be implemented in the loop filtering module of the encoder, and / or the loop filtering module of the decoder.

[0060] III. Video Encoder Example Figure 8 An example video encoder 800 that can implement cascaded vectors is shown. As shown, the video encoder 800 receives an input video signal from a video source 805 and encodes that signal into a bitstream 895. The video encoder 800 has multiple components or modules for encoding the signal from the video source 805, including at least some components selected from transform module 810, quantization module 811, inverse quantization module 814, inverse transform module 815, intra-frame estimation module 824, intra-frame prediction module 825, motion compensation module 830, motion estimation module 835, loop filter 845, reconstructed image buffer 850, MV buffer 865, MV prediction module 875, and entropy encoder 890. Motion compensation module 830 and motion estimation module 835 are part of inter-frame prediction module 840. Intra-frame prediction module 825 and intra-frame prediction estimation module 824 are part of current image prediction module 820, which uses current image reconstruction samples as reference samples to predict the current block.

[0061] In some embodiments, modules 810-890 are software instruction modules executed by one or more processing units (e.g., processors) of a computing device or electronic device. In some embodiments, modules 810-890 are hardware circuit modules implemented by one or more integrated circuits (ICs) of an electronic device. Although modules 810-890 are shown as separate modules, some modules may be combined into a single module.

[0062] Video source 805 provides the raw video signal, which presents the pixel data of each video frame without compression. Subtractor 808 calculates the difference between the raw video pixel data of video source 805 and the predicted pixel data 813 from motion compensation module 830 or intra-frame prediction module 825. Transform module 810 converts the difference (or residual pixel data or residual signal) into transform coefficients (e.g., by performing discrete cosine transform or DCT). Quantization module 811 quantizes the transform coefficients into quantized data (or quantization coefficients) 812, which is encoded into a bitstream 895 by entropy encoder 890.

[0063] The inverse quantization module 814 dequantizes the quantized data (or quantization coefficients) 812 to obtain transform coefficients, and the inverse transform module 815 performs an inverse transform on the transform coefficients to generate a reconstruction residual 819. The reconstruction residual 819 is added to the predicted pixel data 813 to generate reconstructed pixel data 817. In some embodiments, the reconstructed pixel data 817 is temporarily stored in a line buffer 827 (not shown) for intra-frame prediction and spatial MV prediction. The reconstructed pixels are filtered by a loop filter 845 and stored in a reconstructed image buffer 850. In some embodiments, the reconstructed image buffer 850 is external memory to the video encoder 800. In some embodiments, the reconstructed image buffer 850 is internal memory to the video encoder 800.

[0064] Intra-frame estimation module 824 performs intra-frame prediction based on reconstructed pixel data 817 to generate intra-frame prediction data. The intra-frame prediction data is provided to entropy encoder 890 to be encoded into a bitstream 895. The intra-frame prediction data is also used by intra-frame prediction module 825 to generate predicted pixel data 813.

[0065] The motion estimation module 835 performs inter-frame prediction by generating MVs (Motion Values) to reference pixel data of previously decoded frames stored in the reconstructed image buffer 850. These MVs are provided to the motion compensation module 830 to generate predicted pixel data.

[0066] Instead of encoding the complete actual MV in the bitstream, the video encoder 800 uses MV prediction to generate a predicted MV, and the difference between the MV used for motion compensation and the predicted MV is encoded as residual motion data and stored in the bitstream 895.

[0067] Based on the reference MV generated for encoding the previous video frame, i.e., the motion-compensated MV used to perform motion compensation, the MV prediction module 875 generates the predicted MV. The MV prediction module 875 retrieves the reference MV from the previous video frame from the MV buffer 865. The video encoder 800 stores the MV generated for the current video frame in the MV buffer 865 as the reference MV used to generate the predicted MV.

[0068] The MV prediction module 875 uses a reference MV to create the predicted MV. The predicted MV can be calculated by spatial MV prediction or temporal MV prediction. The difference (residual motion data) between the predicted MV and the motion compensation MV (MC MV) of the current frame is encoded into the bitstream 895 by the entropy encoder 890.

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

[0070] The loop filter 845 performs filtering or smoothing operations on the reconstructed pixel data 817 to reduce encoding / decoding artifacts, particularly at pixel block boundaries. In some embodiments, the filtering or smoothing operations performed by the loop filter 845 include a deblocking filter (DBF), a sample adaptive offset (SAO), and / or an adaptive loop filter (ALF). In some embodiments, luma mapping chroma scaling (LMCS) is performed before the loop filter.

[0071] Figure 9 A portion of a video encoder 800 is shown, which acquires and uses intra-frame codec information by using concatenated vectors. The intra-frame codec information can be used to configure or otherwise influence the operation of the prediction codec module 910, the residual generation module 920, and / or the loop filter 845. The prediction codec module 910 may reference the intra-frame prediction module 820, the inter-frame prediction module 840, the current picture perdiction (IBC) module, and / or other codec tools used to generate prediction pixel data 813. The residual generation module 920 may reference the transform module 810, the quantization module 820, the inverse quantization module 814, the inverse transform module 815, and / or other modules used to generate the reconstructed residual 819.

[0072] The intra-frame codec information acquisition module 930 provides intra-frame codec information. Examples of intra-frame codec information used to configure the prediction codec module 910 may include the intra-frame prediction mode of the luma or chroma samples, the intra-frame prediction reference line index, and the most probable intra-frame prediction mode (MPM). Examples of intra-frame codec information may include information about the codec tools, which may directly or indirectly reference at least one intra-frame codec syntax (e.g., transform kernels selected along the horizontal and vertical directions, block sizes or regions, selected filters for reference sample smoothing, selected post-filters for prediction sample smoothing, selected filters for reference sample interpolation, etc.).

[0073] Intra-frame codec information acquisition module 930 extracts intra-frame codec information from intra-frame codec information memory 935, which stores intra-frame codec information used to encode previous blocks. Intra-frame codec information acquisition module 930 determines which intra-frame codec information to extract based on concatenated vectors provided by vector concatenation module 950. Vector concatenation module 950 can generate multiple concatenated vectors based on one or more basis vectors, specifically by performing steps 1 and recursive steps 2(a)-2(c) described in Section II.C above. Multiple concatenated vectors can locate multiple intra-frame codec information from multiple reference blocks, and intra-frame codec information acquisition module 930 can select from them based on the priority rules described in Section II.E above. Basis vectors can be obtained from motion vectors and / or block vectors of the current block and / or previously encoded adjacent blocks.

[0074] Figure 10 A conceptual illustration shows a process 1000 for obtaining intra-frame encoding / decoding information using concatenated vectors when encoding pixel blocks. In some embodiments, one or more processing units (e.g., processors) of a computing device implementing encoder 800 perform process 1000 by executing instructions stored in a computer-readable medium. In some embodiments, an electronic device implementing encoder 800 performs process 1000.

[0075] The encoder receives (in block 1010) data to be encoded into the current pixel block in the current image. The encoder derives (in block 1020) one or more concatenated vectors. Each concatenated vector is derived based on the sum of a motion vector and a block vector recursively traced by a basis vector, which is the motion vector or block vector of the current block or a neighboring block. The encoder can derive multiple concatenated vectors based on a single motion vector or block vector of the current block or a neighboring block.

[0076] The motion vector or block vector used as the basis vector can be selected from the center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The selected positions can be predefined, implicitly selected based on the current block size or neighboring block encoding / decoding information or the prediction mode of the current block, or explicitly indicated. Neighboring blocks from which the basis vector can be derived can be immediately adjacent blocks, spatially non-immediately adjacent blocks, blocks from previously encoded / decoded images, or blocks stored in a history list. In some embodiments, the basis vector can be selected from a candidate list containing one or more motion vectors or block vectors from the current block or one or more previously encoded / decoded blocks.

[0077] The encoder (in block 1030) inherits intra-frame coding information from a reference block indicated by at least one derived concatenated vector. The intra-frame coding information may include any of the following: intra-frame prediction mode for luma or chroma samples, intra-frame prediction reference line index, most probable intra-frame prediction mode (MPM), transform kernels selected along the horizontal and vertical directions, selected filters for smoothing reference samples, selected post-filters for smoothing prediction samples, selected filters for interpolating reference samples, and block size or area.

[0078] Inherited intra-frame codec information can be selected from intra-frame codec information of multiple reference blocks indicated by multiple derived concatenated vectors. In some embodiments, the inherited intra-frame codec information can be selected according to priority determined based on the prediction mode of the current block, the temporal reference image distance to the current image, quantization parameters, the spatial distance between the current block and the reference blocks, or the tracking depth of the derived concatenated vectors indicating the reference blocks.

[0079] The encoder (in block 1040) encodes the current block by applying intra-frame codec information. This intra-frame codec information can be used to create a list of the most probable intra-prediction modes for the current block, to generate predictions for the current block, or to encode the prediction residuals for the current block. For example, the encoder can apply intra-frame codec information by applying a transform kernel inherited from a reference block along the horizontal or vertical direction to encode the prediction residuals for the current block. As another example, the intra-frame prediction angle can be used to select the transform kernel for the LFNST operation or to determine whether to perform reference sample smoothing. The intra-frame prediction angle and block size can be used to determine whether to apply post-filtering (e.g., PDPC) to the current intra-frame block.

[0080] In some embodiments, the encoder stores intra-frame information for reference by subsequent codec blocks. For example, when the current block is encoded using intra-frame prediction, the encoder may store first intra-frame coding / decoding information for encoding the current block, and second intra-frame coding / decoding information indicated by at least one derived concatenated vector. As another example, when the current block is not encoded using intra-frame prediction, the encoder may store intra-frame coding / decoding information for neighboring blocks indicated by at least one derived concatenated vector. In some embodiments, when the current block has no motion vectors or block vectors, more than one set of intra-frame coding / decoding information is obtained using more than one concatenated vector derived from the motion vectors or block vectors of one or more previously encoded neighboring blocks; this information is stored for reference by subsequent codec blocks.

[0081] IV. Example Video Decoder In some embodiments, the encoder may send (or generate) one or more syntax elements in a bitstream, such that the decoder can parse the one or more syntax elements from the bitstream.

[0082] Figure 11 The example video decoder 1100 demonstrates how cascaded vectors can be implemented. As shown, the video decoder 1100 is an image or video decoding circuit that receives a bitstream 1195 and decodes the contents of the bitstream into pixel data of video frames for display. The video decoder 1100 has multiple components or modules for decoding the bitstream 1195, including components selected from inverse quantization module 1114, inverse transform module 1115, intra-frame prediction module 1125, motion compensation module 1130, loop filter 1145, decoded image buffer 1150, MV buffer 1165, MV prediction module 1175, and parser 1190. Motion compensation module 1130 is part of inter-frame prediction module 1140. Intra-frame prediction module 1125 is part of current image prediction module 1120, which uses current image reconstruction samples as reference samples for predicting the current block.

[0083] In some embodiments, modules 1114-1190 are software instruction modules executed by one or more processing units (e.g., processors) of a computing device. In some embodiments, modules 1114-1190 are hardware circuit modules implemented by one or more ICs of an electronic device. Although modules 1114-1190 are shown as separate modules, some modules may be combined into a single module.

[0084] Parser 1190 (or entropy decoder) receives bitstream 1195 and performs initial parsing according to the syntax defined by the video coding or image coding standard. The parsed syntax elements include various header elements, flags, and quantization data (or quantization coefficients) 1112. Parser 1190 parses the various syntax elements using entropy coding techniques such as context-adaptive binary arithmetic coding (CABAC) or Huffman coding.

[0085] The inverse quantization module 1114 dequantizes the quantized data (or quantization coefficients) 1112 to obtain transform coefficients, and the inverse transform module 1115 performs an inverse transform on the transform coefficients 1118 to generate a reconstructed residual signal 1119. The reconstructed residual signal 1119 is added to the predicted pixel data 1113 from the intra-frame prediction module 1125 or the motion compensation module 1130 to generate decoded pixel data 1117. The decoded pixel data is filtered by the loop filter 1145 and stored in the decoded image buffer 1150. In some embodiments, the decoded image buffer 1150 is external memory to the video decoder 1100. In some embodiments, the decoded image buffer 1150 is internal memory to the video decoder 1100.

[0086] Intra-prediction module 1125 receives intra-prediction data from bitstream 1195 and generates prediction pixel data 1113 from decoded pixel data 1117 stored in decoded image buffer 1150 accordingly. In some embodiments, decoded pixel data 1117 is also stored in line buffer 1127 (or intra-prediction buffer) for intra-prediction and spatial motion vector (MV) prediction.

[0087] In some embodiments, the contents of the decoded image buffer 1150 are used for display. The display device 1105 can directly obtain the contents of the decoded image buffer 1150 for display, or it can obtain the contents of the decoded image buffer into a display buffer. In some embodiments, the display device receives pixel values ​​from the decoded image buffer 1150 via pixel transport.

[0088] The motion compensation module 1130 generates predicted pixel data 1113 from the decoded pixel data 1117 stored in the decoded image buffer 1150 based on the motion-compensated motion vectors (MC MV). These motion-compensated motion vectors are decoded by adding the residual motion data received from the bitstream 1195 to the predicted motion vectors received from the motion vector prediction module 1175.

[0089] The motion vector prediction module 1175 generates a predicted motion vector based on a reference motion vector (e.g., a motion-compensated motion vector used to perform motion compensation) generated from decoding a previous video frame. The motion vector prediction module 1175 retrieves the reference motion vector of the previous video frame from the motion vector buffer 1165. The video decoder 1100 stores the motion-compensated motion vector generated from decoding the current video frame in the motion vector buffer 1165 as a reference motion vector for generating the predicted motion vector.

[0090] Loop filter 1145 performs filtering or smoothing operations on the decoded pixel data 1117 to reduce encoding / decoding artifacts, especially at pixel block boundaries. In some embodiments, the filtering or smoothing operations performed by loop filter 1145 include deblocking 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 filter.

[0091] Figure 12 The diagram illustrates some of the functionality of the video decoder 1100, which uses concatenated vectors to acquire and utilize intra-frame codec information. This intra-frame codec information can be used to configure or otherwise influence the operation of the prediction codec module 1210, the residual generation module 1220, and / or the loop filter 1145. The prediction codec module 1210 may reference the intra-frame prediction module 1120, the inter-frame prediction module 1140, the current image prediction (IBC), and / or other codec tools used to generate the predicted pixel data 1113. The residual generation module 1220 may reference the inverse quantization module 1114, the inverse transform module 1115, and / or other modules used to generate the reconstructed residual 1119.

[0092] The intra-frame codec information acquisition module 1230 provides intra-frame codec information. Examples of intra-frame codec information used to configure the prediction codec module 1210 may include the intra-frame prediction mode of the luma or chroma samples, the intra-frame prediction reference line index, and the most probable intra-frame prediction mode (MPM). Examples of intra-frame codec information may include a transform kernel selected along the horizontal and vertical directions, block size or region, a selected filter for smoothing the reference sample, a selected post-filter for smoothing the prediction sample, a selected filter for interpolating the reference sample, etc.

[0093] Intra-frame codec information acquisition module 1230 acquires intra-frame codec information from intra-frame codec information memory 1235, which stores intra-frame codec information used for encoding and decoding previous blocks. Intra-frame codec information acquisition module 1230 determines which intra-frame codec information to acquire based on the concatenated vectors provided by vector concatenation module 1250. Vector concatenation module 1250 can generate multiple concatenated vectors based on one or more basis vectors, specifically by executing steps 1 and recursive steps 2(a)-2(c) described in Section II.C above. Multiple concatenated vectors can locate multiple intra-frame codec information from multiple reference blocks, and intra-frame codec information acquisition module 1230 can select from them based on the priority rules described in Section II.E above. Basis vectors can be acquired from the motion vectors and / or block vectors of the current block and / or previously encoded adjacent blocks.

[0094] Figure 13 A conceptual illustration shows a process 1300 for obtaining intra-frame codec information using concatenated vectors when decoding pixel blocks. In some embodiments, one or more processing units (e.g., processors) of a computing device implementing decoder 1100 perform process 1300 by executing instructions stored in a computer-readable medium. In some embodiments, an electronic device implementing decoder 1100 performs process 1300.

[0095] The decoder receives (in block 1310) data to be decoded into the current pixel block in the current image. The decoder derives (in block 1320) one or more concatenated vectors. Each concatenated vector is derived based on the sum of a motion vector and a block vector recursively traced by a basis vector, which is the motion vector or block vector of the current block or a neighboring block. The decoder may derive multiple concatenated vectors based on a single motion vector or block vector of the current block or a neighboring block.

[0096] The motion vector or block vector used as the basis vector can be selected from the center, top-left, top-right, bottom-left, and bottom-right positions of the current block. The selected positions can be predefined, implicitly selected based on the current block size, neighboring block encoding / decoding information, or the prediction mode of the current block, or explicitly indicated. Neighboring blocks from which the basis vector can be derived can be adjacent blocks, spatially non-immediately adjacent blocks, blocks from previously encoded / decoded images, or blocks stored in a history list. In some embodiments, the basis vector can be selected from a candidate list containing one or more motion vectors or block vectors from the current block or one or more previously encoded / decoded blocks.

[0097] The decoder (in block 1330) inherits intra-frame coding information from a reference block indicated by at least one derived concatenated vector. The intra-frame coding information may include any of the following: intra-frame prediction mode for luma or chroma samples, intra-frame prediction reference line index, most probable intra-frame prediction mode (MPM), selected transform kernels along the horizontal and vertical directions, selected filters for smoothing reference samples, selected post-filters for smoothing prediction samples, selected filters for interpolating reference samples, and block size or area.

[0098] Inherited intra-frame codec information can be selected from the intra-frame codec information of multiple reference blocks indicated by multiple derived concatenated vectors. In some embodiments, the inherited intra-frame codec information can be selected based on a priority determined by the prediction mode of the current block, the temporal reference image distance to the current image, quantization parameters, the spatial distance between the current block and the reference blocks, or the tracking depth of the derived concatenated vectors indicating the reference blocks.

[0099] The decoder (in block 1340) reconstructs the current block by applying intra-frame codec information. This intra-frame codec information can be used to create a list of the most probable intra-frame prediction modes for the current block, or to generate predictions for the current block, or to encode the prediction residuals for the current block. For example, the decoder can apply intra-frame codec information by applying a transform kernel inherited from the reference block along the horizontal or vertical direction to decode the prediction residuals for the current block. As another example, the intra-frame prediction angle can be used to select the transform kernel for the LFNST operation, or to determine whether to perform reference sample smoothing. The intra-frame prediction angle and block size can be used to determine whether to apply post-filtering (e.g., PDPC) to the current intra-frame block.

[0100] In some embodiments, the decoder stores intra-frame information for reference by subsequent codec blocks. For example, when the current block is encoded via intra-frame prediction, the decoder may store first intra-frame codec information for decoding the current block, and second intra-frame codec information indicated by at least one derived concatenated vector. As another example, when the current block is not encoded via intra-frame prediction, the decoder may store intra-frame codec information for neighboring blocks indicated by at least one derived concatenated vector. In some embodiments, when the current block has no motion vectors or block vectors, more than one concatenated vector is used to obtain more than one set of intra-frame codec information derived from the motion vectors or block vectors of one or more previously encoded neighboring blocks; this information is stored for reference by subsequent codec blocks. The decoder can then provide the reconstructed current block for display as part of the reconstructed current image.

[0101] V. Example Electronic System Many of the aforementioned features and applications are implemented as software processes, which are specified as a set of instructions recorded on a computer-readable storage medium (also known as a computer-readable medium). When these instructions are executed by one or more computing or processing units (e.g., one or more processors, processor cores, or other processing units), they cause the processing unit to perform the actions indicated in the instructions. Examples of computer-readable media include, but are not limited to, compact discread-only memory (CD-ROM), flash memory drives, random-access memory (RAM) chips, hard disk drives, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), etc. Computer-readable media do not include carrier waves and electronic signals transmitted via wireless or wired connections.

[0102] In this specification, the term "software" is intended to include firmware residing in read-only memory or an application stored in magnetic memory that can be read into memory for processor processing. Furthermore, in some embodiments, multiple software inventions may be implemented as sub-parts of a larger program while retaining distinct software inventions. In some embodiments, multiple software inventions may also be implemented as separate programs. Finally, any combination of separate programs that collectively implement the software inventions described herein is within the scope of this disclosure. In some embodiments, a software program, when installed to run on one or more electronic systems, defines one or more specific machine implementations that process and perform the operations of the software program.

[0103] Figure 14 An electronic system 1400 implementing some embodiments of the present disclosure is conceptually illustrated. The electronic system 1400 may be a computer (e.g., a desktop computer, personal computer, tablet computer, etc.), a telephone, a PDA, or any other type of electronic device. Such an electronic system includes various types of computer-readable media and interfaces for various other types of computer-readable media. The electronic system 1400 includes a bus 1405, a processing unit 1410, a graphics-processing unit (GPU) 1415, system memory 1420, a network 1425, read-only memory 1430, a permanent storage device 1435, an input device 1440, and an output device 1445.

[0104] Bus 1405 collectively represents all system, peripheral, and chipset buses of the numerous internal devices that are communicatively connected to electronic system 1400. For example, bus 1405 communicatively connects processing unit 1410 to GPU 1415, read-only memory 1430, system memory 1420, and permanent storage device 1435.

[0105] Processing unit 1410 retrieves instructions to be executed and data to be processed from these various memory units in order to perform the processing of this disclosure. In different embodiments, the processing unit may be a single processor or a multi-core processor. Some instructions are passed to GPU 1415 and executed thereon. GPU 1415 may offload various computations or supplement the image processing provided by processing unit 1410.

[0106] Read-only memory (ROM) 1430 stores static data and instructions used by processing unit 1410 and other modules of the electronic system. On the other hand, permanent storage device 1435 is a read-write storage device. This device is a non-volatile storage unit that stores instructions and data even when the electronic system 1400 is turned off. Some embodiments of this disclosure use mass storage devices (e.g., magnetic disks or optical disks and their corresponding disk drives) as permanent storage device 1435.

[0107] Other embodiments use removable storage devices (e.g., floppy disks, flash memory devices, etc., and their corresponding disk drives) as permanent storage devices. Like permanent storage device 1435, system memory 1420 is a read-write memory device. However, unlike permanent storage device 1435, system memory 1420 is volatile read-write memory, such as random access memory. System memory 1420 stores some instructions and data used by the processor during runtime. In some embodiments, the processing according to this disclosure is stored in system memory 1420, permanent storage device 1435, and / or read-only memory 1430. For example, according to some embodiments of this disclosure, various memory units include instructions for processing multimedia clips. From these various memory units, processing unit 1410 obtains instructions to be executed and data to be processed in order to perform the processing of some embodiments.

[0108] Bus 1405 is also connected to input device 1440 and output device 1445. Input device 1440 enables a user to communicate information and select commands to the electronic system. Input device 1440 includes an alphanumeric keypad and a pointing device (also known as a "cursor control device"), a camera (e.g., a webcam), a microphone, or similar devices for receiving voice commands. Output device 1445 displays images or output data generated by the electronic system. Output device 1445 includes printers and display devices, such as cathode ray tubes (CRTs) or liquid crystal displays (LCDs), as well as speakers or similar audio output devices. Some embodiments include devices used as both input and output devices, such as touchscreens.

[0109] Finally, as Figure 14 As shown, bus 1405 also couples electronic system 1400 to network 1425 via a network adapter (not shown). In this way, the computer can be part of a computer network (e.g., a local area network (“LAN”), a wide area network (“WAN”), or an internal network, or a network of multiple networks such as the Internet. Any or all components of electronic system 1400 can be used in conjunction with this disclosure.

[0110] Some embodiments include electronic components, such as microprocessors, storage devices, and memory, that store computer program instructions in a machine-readable or computer-readable medium (or, as referred to as, a computer-readable storage medium, machine-readable medium, or machine-readable storage medium). 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), various 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 disk drives, read-only and recordable Blu-ray® discs, ultra-high-density discs, any other optical or magnetic media, and floppy disks. Computer-readable media can store computer programs that can be executed by at least one processing unit and include a set of instructions for performing various operations. Examples of computer programs or computer code include machine code generated by a compiler, and documents that include high-level code executed by a computer, electronic components, or a microprocessor using an interpreter.

[0111] While the above discussion primarily concerns microprocessors or multi-core processors that execute software, many of the aforementioned features and applications are implemented 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 stored on the circuit itself. Furthermore, some embodiments execute software stored in a programmable logic device (PLD), ROM, or RAM device.

[0112] As used in this specification and any claim of this application, the terms "computer," "server," "processor," and "memory" refer to electronic or other technical devices. These terms do not include people or groups of people. For the purposes of this specification, the term "display" or "show" means display on an electronic device. As used in this specification and any claim of this application, the terms "computer-readable medium," "machine-readable medium," and "computer-readable medium" are strictly limited to tangible physical objects that store information in a computer-readable form. These terms do not include any wireless signals, wired download signals, or any other transient signals.

[0113] Although this disclosure has been described with reference to numerous specific details, those skilled in the art will recognize that this disclosure may be implemented in other particular forms without departing from the spirit of this disclosure. Furthermore, many figures (including...) Figure 10 and Figure 13 This invention provides a conceptual illustration of the processing. The specific operations of these processes may not be performed in the exact order shown and described. Specific operations may not be performed in a continuous series of operations; different specific operations may be performed in different embodiments. Furthermore, the processing may be implemented using several sub-processes or as part of a larger macro-process. Therefore, those skilled in the art will understand that this disclosure is not limited to the foregoing illustrative details but is defined by the appended claims.

[0114] Supplementary Explanation The topics described herein sometimes refer to different components that are contained in or connected to other different components. It is understood that the described structures are merely examples, and many other structures can actually be implemented to achieve the same functionality. Conceptually, any arrangement of components that achieve the same function is actually “associated” in order to achieve the desired function. Therefore, any two components combined to achieve a specific function, whether structural or intermediate, are considered “interrelated” to achieve the desired function. Similarly, any two associated components are considered to be “operably connected” or “operably coupled” to each other to achieve a specific function. Any two components that can be associated with each other are also considered to be “operably coupled” to each other to achieve a specific function. Any two components that can be associated with each other are also considered to be “operably coupled” to each other to achieve a specific function. Specific examples of operational connections include, but are not limited to, physically pairable and / or physically interacting components, and / or wirelessly interactive and / or wirelessly interacting components, and / or logically interacting and / or logically interactive components.

[0115] Furthermore, regarding the use of virtually any plural and / or singular terms, those skilled in the art can transform from plural to singular and / or from singular to plural depending on the context and / or application. For clarity, the present invention explicitly describes different singular / plural permutations.

[0116] Furthermore, those skilled in the art will understand that, generally, the terminology used in this invention, particularly in the claims, and the subject matter of the claims, is typically used as "open" terms. For example, "comprising" should be interpreted as "including but not limited to," "having" should be interpreted as "at least," and "comprising" should be interpreted as "including but not limited to," etc. Those skilled in the art will further understand that if a specific number of claims are intended to be described, this will be explicitly stated within the claims, and will not be shown if such content is not present. For example, to aid understanding, the following claims may contain the phrases "at least one" and "one or more" to describe the content of the claims. However, the use of these phrases should not be construed as implying the use of the indefinite articles "one" or "a" to describe the content of the claims, thus limiting any particular patent scope. Even when the same claim includes the introductory phrases "one or more" or "at least one," the indefinite articles, such as "one" or "a," should be interpreted as indicating at least one or more, and the same applies to the use of explicit descriptions to describe the claims. Furthermore, even when a specific number of introductory phrases are explicitly cited, those skilled in the art will recognize that such phrases should be interpreted as indicating the number of citations. For example, "two citations" without further modification means at least two citations, or two or more citations. Additionally, in the use of expressions such as "at least one of A, B, and C," this is generally done so that those skilled in the art can understand the expression. For example, "the system comprises at least one of A, B, and C" will include, but is not limited to, a system having A alone, a system having B alone, a system having C alone, a system having A and B, a system having A and C, a system having B and C, and / or a system having A, B, and C, etc. Those skilled in the art will further understand that any separated words and / or phrases represented by two or more alternative terms, whether in the specification, claims, or drawings, should be understood to include one, one, or both of these terms. For example, "A or B" should be understood as "A," or "B," or "A and B."

[0117] As can be seen from the foregoing, various embodiments of the present invention have been described for illustrative purposes, and various modifications can be made without departing from the scope and spirit of the invention. Therefore, the various embodiments disclosed herein are not intended to be limiting, and the true scope and application are indicated by the claims.

Claims

1. A video encoding / decoding method, comprising: Receive data of the current pixel block of the current image, which is to be encoded or decoded as video; Derive one or more concatenated vectors, each concatenated vector being derived from a basis vector as the sum of multiple motion vectors and multiple block vectors recursively traced, wherein the basis vector is the motion vector or block vector of the current block or a previously encoded neighboring block; Inherit intra-frame encoding / decoding information from the reference block indicated by at least one of the exported concatenated vectors; and The current block is encoded or decoded by applying the intra-frame encoding / decoding information.

2. The video encoding and decoding method as described in claim 1, characterized in that, The intra-frame encoding / decoding information is used to create a list of the most likely intra-frame prediction modes for the current block, or to generate a prediction for the current block, or to encode / decode the prediction residual for the current block.

3. The video encoding and decoding method as described in claim 1, characterized in that, The intra-frame encoding / decoding information includes any of the following: intra-frame prediction modes for multiple luminance or chrominance samples, intra-frame prediction reference line index, multiple most probable intra-frame prediction modes, multiple transform kernels selected along the horizontal and vertical directions, selected filters for reference sample smoothing, selected post-filters for prediction sample smoothing, selected filters for reference sample interpolation, and block size or area.

4. The video encoding and decoding method as described in claim 1, characterized in that, The previously encoded neighboring block is one of the following: an adjacent block, a spatially non-adjacent block, a block from a previously encoded image, or a block stored in the history list.

5. The video encoding and decoding method as described in claim 1, characterized in that, The one or more concatenated vectors are derived from a motion vector or block vector of the current block or the adjacent block.

6. The video encoding and decoding method as described in claim 1, characterized in that, Applying the intra-frame encoding / decoding information includes using a transform kernel inherited from the reference block along the horizontal or vertical direction to encode or decode the prediction residual of the current block.

7. The video encoding and decoding method as described in claim 1, characterized in that, The motion vector or block vector used as the basis vector is selected from the center, top left, top right, bottom left, and bottom right positions of the current block.

8. The video encoding and decoding method as described in claim 7, characterized in that, The selected location is implicitly chosen based on the size of the current block.

9. The video encoding and decoding method as described in claim 1, characterized in that, The basis vector is selected from a candidate list that includes one or more motion vectors or block vectors from the current block or one or more previously encoded / decoded blocks.

10. The video encoding and decoding method as described in claim 1, characterized in that, The inherited intra-frame codec information is selected from the intra-frame codec information of multiple reference blocks indicated by one or more derived concatenated vectors.

11. The video encoding and decoding method as described in claim 10, characterized in that, The inherited intra-frame coding and decoding information is selected based on the priority determined by the prediction mode based on the current block, the distance to the temporal reference image of the current image, the quantization parameters, the spatial distance between the current block and the reference block, or the tracking depth of the derived concatenated vector indicating the reference block.

12. The video encoding and decoding method as described in claim 1, characterized in that, The method further includes: when the current block is encoded or decoded by intra-frame prediction, storing first intra-frame encoding / decoding information for encoding or decoding the current block and second intra-frame encoding / decoding information indicated by at least one concatenated vector from the one or more derived concatenated vectors, wherein the stored intra-frame encoding / decoding information is for reference by subsequent encoding / decoding blocks.

13. The video encoding and decoding method as described in claim 12, characterized in that, The method further includes: when the current block is not encoded or decoded by intra-frame prediction, storing intra-frame encoding and decoding information of adjacent blocks indicated by at least one of the derived concatenation vectors, and storing the intra-frame encoding and decoding information for reference by subsequent encoding and decoding blocks.

14. The video encoding and decoding method as described in claim 12, characterized in that, The method further includes: when the current block has no motion vector or block vector, one or more concatenated vectors derived from multiple motion vectors or multiple block vectors of one or more previously encoded adjacent blocks are used to obtain one or more intra-frame encoding / decoding information to be stored for the current block for reference by subsequent encoding / decoding blocks.

15. An electronic device comprising: The video encoding / decoding circuit is configured to perform the following operations: Receive data of the current pixel block of the current image, which is to be encoded or decoded as video; Derive one or more concatenated vectors, each concatenated vector being derived from a basis vector as the sum of multiple motion vectors and multiple block vectors recursively traced, wherein the basis vector is the motion vector or block vector of the current block or a previously encoded neighboring block; Inherit intra-frame encoding / decoding information from the reference block indicated by at least one of the exported concatenated vectors; and The current block is encoded or decoded by applying the intra-frame encoding / decoding information.

16. A video decoding method, comprising: Receive data of the current pixel block of the current image, which is to be decoded as video; Derive one or more concatenated vectors, each concatenated vector being derived from a basis vector as the sum of multiple motion vectors and multiple block vectors recursively traced, wherein the basis vector is the motion vector or block vector of the current block or a previously encoded neighboring block; Inherit intra-frame encoding / decoding information from the reference block indicated by at least one of the exported concatenated vectors; and The current block is reconstructed by applying the intra-frame encoding and decoding information.

17. A video coding method, comprising: Receive data of the current pixel block of the current image to be encoded as video; Derive one or more concatenated vectors, each concatenated vector being derived from a basis vector as the sum of multiple motion vectors and multiple block vectors recursively traced, wherein the basis vector is the motion vector or block vector of the current block or a previously encoded neighboring block; Inherit intra-frame encoding / decoding information from the reference block indicated by at least one of the exported concatenated vectors; and The current block is encoded by applying the intra-frame encoding / decoding information.