Method, apparatus and device for motion information list construction in video coding

CN119788875BActive Publication Date: 2026-10-20TENCENT TECHNOLOGY (SHENZHEN) CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202510049196.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-07-29
Publication Date
2026-10-20
Estimated Expiration
2040-07-29

AI Technical Summary

Technical Problem

[0004]但是,当运动信息列表中包含的位移矢量不足时,会导致该运动信息列表无法提供有效的预测位移矢量,这会影响到视频的压缩性能

Benefits of technology

[0018]通过在初始的运动信息列表中包含的运动信息不足时,采用额外的运动信息进行填充,实现对该初始的运动信息列表进行初始化更新,从而在该运动信息列表中提供更多更有效的位移矢量,以取得更好的位移矢量预测效果,提升视频的压缩性能。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119788875B_ABST
    Figure CN119788875B_ABST
Patent Text Reader

Abstract

The application provides a motion information list construction method, device and equipment in video coding, and relates to the technical field of video coding. The method comprises the following steps: acquiring an initial motion information list; determining at least one motion information in the case that the length of the motion information list meets a condition; adding the at least one motion information into the motion information list to obtain an initialized and updated motion information list. In the embodiment of the application, when the motion information contained in the initial motion information list is insufficient, the additional motion information is used for filling, the initial motion information list is initialized and updated, more effective displacement vectors are provided in the motion information list, better displacement vector prediction effect is obtained, and the compression performance of the video is improved.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the invention patent application filed on July 29, 2020, with application number 202010747207.0 and invention title "Method, Apparatus and Device for Constructing Motion Information List in Video Encoding and Decoding". Technical Field

[0002] This application relates to the field of video encoding and decoding technology, and in particular to a method, apparatus, and device for constructing a motion information list in video encoding and decoding. Background Technology

[0003] In current video compression technologies, such as VVC (Versatile Video Coding) and AVS3 (Audio Video Coding Standard 3), video codecs typically need to build a list of motion information to derive the predicted displacement vector.

[0004] However, when the motion information list contains insufficient displacement vectors, it will be unable to provide effective predicted displacement vectors, which will affect the compression performance of the video. Summary of the Invention

[0005] This application provides a method, apparatus, and device for constructing a motion information list in video encoding and decoding. When the motion information in the motion information list is insufficient, additional motion information can be used to fill it in, thereby achieving better displacement vector prediction results and improving video compression performance. The technical solution is as follows:

[0006] According to one aspect of the embodiments of this application, a method for constructing a motion information list in video encoding and decoding is provided, the method comprising:

[0007] Obtain the initial list of motion information;

[0008] If the length of the motion information list meets the condition, at least one piece of motion information is determined; wherein, the length refers to the number of pieces of motion information included in the motion information list;

[0009] Add the at least one piece of motion information to the motion information list to obtain the initialized and updated motion information list.

[0010] According to one aspect of the embodiments of this application, a motion information list construction apparatus for video encoding and decoding is provided, the apparatus comprising:

[0011] The list retrieval module is used to retrieve an initial list of motion information;

[0012] An information determination module is used to determine at least one piece of motion information when the length of the motion information list meets a certain condition; wherein, the length refers to the number of pieces of motion information included in the motion information list;

[0013] The list update module is used to add the at least one piece of motion information to the motion information list to obtain the initialized and updated motion information list.

[0014] According to one aspect of the embodiments of this application, a computer device is provided, the computer device including a processor and a memory, the memory storing at least one instruction, at least one program, code set or instruction set, the at least one instruction, the at least one program, the code set or instruction set being loaded and executed by the processor to implement the motion information list construction method in the above-described video encoding and decoding.

[0015] According to one aspect of the embodiments of this application, a computer-readable storage medium is provided, wherein at least one instruction, at least one program, code set, or instruction set is stored in the computer-readable storage medium, wherein the at least one instruction, the at least one program, the code set, or the instruction set is loaded and executed by a processor to implement the motion information list construction method in the above-described video encoding and decoding.

[0016] In another aspect, embodiments of this application provide a computer program product or computer program that includes computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computer device to perform the motion information list construction method in the aforementioned video encoding / decoding process.

[0017] The technical solutions provided in this application embodiment may have the following beneficial effects:

[0018] When the initial motion information list is insufficient, additional motion information is used to fill it in, thereby updating the initial motion information list and providing more effective displacement vectors to achieve better displacement vector prediction and improve video compression performance. Attached Figure Description

[0019] Figure 1 This application exemplarily illustrates a basic flowchart of a video encoding process;

[0020] Figure 2 This is a schematic diagram of an inter-frame prediction mode provided in one embodiment of this application;

[0021] Figure 3This is a schematic diagram of a candidate motion vector provided in one embodiment of this application;

[0022] Figure 4 This is a schematic diagram of an intra-block copying mode provided in one embodiment of this application;

[0023] Figure 5 This is a schematic diagram of an intra-frame string copying mode provided in one embodiment of this application;

[0024] Figure 6 This is a simplified block diagram of a communication system provided in one embodiment of this application;

[0025] Figure 7 This is a schematic diagram illustrating the placement of a video encoder and a video decoder in a streaming environment, as exemplarily shown in this application.

[0026] Figure 8 This is a flowchart of a method for constructing a motion information list in video encoding and decoding according to an embodiment of this application;

[0027] Figure 9 This is a block diagram of a motion information list construction apparatus in video encoding and decoding provided in one embodiment of this application;

[0028] Figure 10 This is a structural block diagram of a computer device provided in one embodiment of this application. Detailed Implementation

[0029] To make the objectives, technical solutions, and advantages of this application clearer, the embodiments of this application will be described in further detail below with reference to the accompanying drawings.

[0030] Before describing the embodiments of this application, firstly, in conjunction with Figure 1 A brief introduction to video coding technology. Figure 1 An example is shown in a basic flowchart of a video encoding process.

[0031] A video signal refers to an image sequence consisting of multiple frames. A frame represents the spatial information of a video signal. Taking YUV mode as an example, a frame includes a luminance sample matrix (Y) and two chrominance sample matrices (Cb and Cr). From the perspective of how video signals are acquired, they can be divided into two types: those captured by a camera and those generated by a computer. Due to differences in statistical characteristics, the corresponding compression coding methods may also differ.

[0032] In some mainstream video coding technologies, such as H.265 / HEVC (High Efficient Video Coding), H.266 / VVC (Versatile Video Coding), and AVS (Audio Video Coding Standard) (e.g., AVS3), a hybrid coding framework is used to perform a series of operations and processes on the input raw video signal:

[0033] 1. Block Partition Structure: The input image is divided into several non-overlapping processing units, each of which undergoes a similar compression operation. This processing unit is called a CTU (Coding Tree Unit) or LCU (Large Coding Unit). Further subdivisions can be made below the CTU to obtain one or more basic coding units, called CUs (Coding Units). Each CU is the most basic element in a coding process. The following describes the various coding methods that can be used for each CU.

[0034] 2. Predictive Coding: This includes intra-frame prediction and inter-frame prediction. The original video signal is predicted from a selected reconstructed video signal to obtain a residual video signal. The encoder needs to determine the most suitable predictive coding mode from among many possible modes for the current CU and inform the decoder. Intra-frame prediction refers to predicting signals from already encoded and reconstructed regions within the same image. Inter-frame prediction refers to predicting signals from other encoded images (called reference images) that are different from the current image.

[0035] 3. Transform Coding and Quantization: The residual video signal undergoes transformation operations such as DFT (Discrete Fourier Transform) and DCT (Discrete Cosine Transform) to convert the signal into the transform domain, where the coefficients are called transform coefficients. In the transform domain, the signal undergoes further lossy quantization, losing some information to make the quantized signal more suitable for compression. Some video coding standards may offer more than one transform option; therefore, the encoder needs to select one transform for the current CU and inform the decoder. The fineness of quantization is usually determined by the quantization parameter. A larger QP (Quantization Parameter) value means that coefficients with a wider range of values ​​will be quantized into the same output, which usually results in greater distortion and a lower bitrate. Conversely, a smaller QP value means that coefficients with a smaller range of values ​​will be quantized into the same output, which usually results in less distortion and a higher bitrate.

[0036] 4. Entropy Coding or Statistical Coding: The quantized transform domain signal is statistically compressed and encoded based on the frequency of each value, ultimately outputting a binary (0 or 1) compressed bitstream. Simultaneously, other information generated during encoding, such as the selected mode and motion vectors, also requires entropy coding to reduce the bit rate. Statistical coding is a lossless coding method that effectively reduces the bit rate required to represent the same signal. Common statistical coding methods include Variable Length Coding (VLC) or Content-Adaptive Binary Arithmetic Coding (CABAC).

[0037] 5. Loop Filtering: An encoded image undergoes inverse quantization, inverse transform, and prediction compensation (the reverse operations of steps 2-4 above) to obtain a reconstructed decoded image. Compared to the original image, the reconstructed image differs in some information due to quantization, resulting in distortion. Filtering the reconstructed image, such as deblocking, SAO (Sample Adaptive Offset), or ALF (Adaptive Lattice Filter), can effectively reduce the distortion caused by quantization. Since these filtered reconstructed images will serve as a reference for subsequent encoded images to predict future signals, the above filtering operations are also called loop filtering, or filtering operations within the encoding loop.

[0038] As can be seen from the above encoding process, at the decoding end, for each CU, after obtaining the compressed bitstream, the decoder first performs entropy decoding to obtain various mode information and quantized transform coefficients. Each coefficient undergoes inverse quantization and inverse transform to obtain the residual signal. On the other hand, based on the known encoding mode information, the prediction signal corresponding to that CU can be obtained. After adding the two, the reconstructed signal is obtained. Finally, the reconstructed value of the decoded image needs to undergo a loop filtering operation to generate the final output signal.

[0039] Many mainstream video coding standards, such as HEVC, VVC, and AVS3, employ block-based hybrid coding frameworks. They divide the raw video data into a series of coded blocks and combine prediction, transform, and entropy coding methods to achieve video data compression. Motion compensation is a commonly used prediction method in video coding. Based on the redundancy characteristics of video content in the temporal or spatial domains, motion compensation derives the predicted value of the current coded block from the already coded regions. These prediction methods include inter-frame prediction, intra-frame block copy prediction, and intra-frame string copy prediction. In specific coding implementations, these prediction methods may be used individually or in combination. For coded blocks using these prediction methods, one or more two-dimensional displacement vectors are typically explicitly or implicitly encoded in the bitstream to indicate the displacement of the current block (or its sibling blocks) relative to one or more reference blocks.

[0040] It is important to note that the displacement vector may have different names depending on the prediction mode and implementation. This article will consistently describe them as follows: 1) The displacement vector in inter-frame prediction mode is called the motion vector (MV); 2) The displacement vector in IBC (Intra Block Copy) prediction mode is called the block vector (BV); 3) The displacement vector in ISC (Intra String Copy) prediction mode is called the string vector (SV). Intra-frame string copy is also known as "string prediction" or "string matching," etc.

[0041] MV refers to the displacement vector used in inter-frame prediction mode, pointing from the current image to the reference image. Its value is the coordinate offset between the current block and the reference block, which are located in two different images. In inter-frame prediction mode, motion vector prediction can be introduced. By predicting the motion vector of the current block, the predicted motion vector corresponding to the current block is obtained. The difference between the predicted motion vector and the actual motion vector corresponding to the current block is encoded and transmitted. Compared with directly encoding and transmitting the actual motion vector corresponding to the current block, this saves bit overhead. In the embodiments of this application, the predicted motion vector refers to the predicted value of the motion vector of the current block obtained through motion vector prediction technology.

[0042] BV refers to the displacement vector used in IBC prediction mode, and its value is the coordinate offset between the current block and the reference block, where both the current block and the reference block are within the current image. In IBC prediction mode, block vector prediction can be introduced. By predicting the block vector of the current block, a predicted block vector corresponding to the current block is obtained. The difference between the predicted block vector and the actual block vector is encoded and transmitted. Compared to directly encoding and transmitting the actual block vector corresponding to the current block, this saves bit overhead. In the embodiments of this application, the predicted block vector refers to the predicted value of the block vector of the current block obtained through block vector prediction technology.

[0043] SV refers to the displacement vector used in ISC prediction mode, and its value is the coordinate offset between the current string and the reference string, where both the current string and the reference string are within the current image. In ISC prediction mode, string vector prediction can be introduced. By predicting the string vector of the current string, a predicted string vector corresponding to the current string is obtained. The difference between the predicted string vector and the actual string vector is encoded and transmitted. Compared to directly encoding and transmitting the actual string vector corresponding to the current string, this saves bit overhead. In the embodiments of this application, the predicted string vector refers to the predicted value of the string vector of the current string obtained through string vector prediction technology.

[0044] The following section introduces several different prediction models:

[0045] I. Inter-frame prediction mode

[0046] like Figure 2 As shown, inter-frame prediction utilizes the correlation in the video's temporal domain, using pixels from neighboring encoded images to predict pixels in the current image. This effectively removes temporal redundancy and saves bits of encoding residual data. Here, P is the current frame, Pr is the reference frame, B is the current block to be encoded, and Br is the reference block for B. B' and B have the same coordinates in the image; Br's coordinates are (xr, yr), and B''s coordinates are (x, y). The displacement between the current block to be encoded and its reference block is called the motion vector (MV), i.e.:

[0047] MV = (xr-x, yr-y).

[0048] Considering the strong correlation between neighboring blocks in the temporal or spatial domains, MV prediction techniques can be used to further reduce the bits required to encode MVs. In H.265 / HEVC, inter-frame prediction includes two MV prediction techniques: Merge and AMVP (Advanced Motion Vector Prediction).

[0049] The Merge mode creates a candidate MV list for the current Prediction Unit (PU), containing five candidate MVs (and their corresponding reference images). It iterates through these five candidate MVs, selecting the one with the lowest rate-distortion cost as the optimal MV. If the codec creates the candidate list in the same way, the encoder only needs to transmit the index of the optimal MV in the candidate list. It's important to note that HEVC's MV prediction technique also has a Skip mode, a special case of the Merge mode. After finding the optimal MV in the Merge mode, if the current block and the reference block are essentially identical, then residual data does not need to be transmitted; only the MV index and a skip flag need to be sent.

[0050] The Merge mode generates a candidate MV list that includes both spatial and temporal domains. For B-frames, it also includes a combined list approach. The spatial domain provides a maximum of four candidate MVs, and its generation is as follows: Figure 3 As shown in section (a) of the diagram. The spatial domain list is established in the order A1→B1→B0→A0→B2, where B2 is a substitute; that is, if one or more of A1, B1, B0, and A0 are missing, the motion information of B2 must be used. The temporal domain provides at most one candidate MV, and its establishment is as follows: Figure 3 As shown in part (b), the MV of the isotopic PU is obtained by stretching and contracting according to the following formula:

[0051] curMV = td * colMV / tb;

[0052] Where `curMV` represents the current PU's MV, `colMV` represents the MV of the corresponding PU, `td` represents the distance between the current image and the reference image, and `tb` represents the distance between the corresponding image and the reference image. If the PU at position D0 in the corresponding block is unavailable, it is replaced by the corresponding PU at position D1. For a PU in a B-slice, since there are two MVs, its MV candidate list also needs to provide two MVPs (Motion Vector Predictors). HEVC generates a combination list for the B-slice by pairwise combining the first four candidate MVs in the MV candidate list.

[0053] Similarly, the AMVP mode utilizes the correlation of MVs (Motion Vector Differences) between neighboring blocks in the spatial and temporal domains to build a candidate MV list for the current PU. Unlike the Merge mode, the AMVP mode selects the optimal predicted MV from the candidate MV list and performs differential coding with the optimal MV obtained through motion search for the current block to be encoded, i.e., encoded MVD = MV - MVP, where MVD is the Motion Vector Difference. The decoder builds the same list and only needs the MVD and MVP's index in the list to calculate the MV of the current decoded block. The AMVP mode's MV candidate list also includes both spatial and temporal domain cases, but the difference is that the length of the AMVP mode's MV candidate list is only 2.

[0054] HMVP (History-based Motion Vector Prediction) is a new motion vector prediction technique adopted in H.266 / VVC. HMVP is a motion vector prediction method based on historical information. Motion information from previous coded blocks is stored in the HMVP list and used as the MVP for the current CU (Coding Unit). H.266 / VVC adds the HMVP to the candidate list of merge modes, after the spatial and temporal MVPs. HMVP uses a First-In-First-Out (FIFO) queue to store the motion information of previous coded blocks. If a stored candidate motion information is identical to the recently encoded motion information, this duplicate candidate motion information is removed first, then all HMVP candidates are moved forward, and the motion information of the current coding unit is added to the end of the FIFO. If the motion information of the current coding unit is different from the motion information of any candidate in the FIFO, the latest motion information is added to the end of the FIFO. When adding new motion information to the HMVP list, if the list has reached its maximum length, the first candidate in the FIFO is removed, and the latest motion information is added to the end of the FIFO. The HMVP list is reset (cleared) when a new CTU (Coding Tree Unit) row is encountered. In H.266 / VVC, the HMVP table size S is set to 6. To reduce the number of redundant check operations, the following simplification is introduced:

[0055] 1. Set the number of HMVP candidates used to generate the Merge list to (N <= 4)? M: (8-N), where N represents the number of existing candidates in the Merge list, and M represents the number of available HMVP candidates in the Merge list.

[0056] 2. Once the length of the available merge list reaches the maximum allowed length minus 1, the HMVP merge candidate list building process terminates.

[0057] II. IBC Prediction Model

[0058] IBC is an intra-frame coding tool adopted in the HEVC Screen Content Coding (SCC) extension, which significantly improves the coding efficiency of screen content. AVS3 and VVC also employ IBC technology to enhance the performance of screen content coding. IBC utilizes the spatial correlation of screen content video, using already encoded image pixels in the current image to predict the pixels of the current block to be encoded, effectively saving the bits required to encode pixels. Figure 4As shown, the displacement between the current block and its reference block in IBC is called the BV (Block Vector). H.266 / VVC employs a BV prediction technique similar to inter-frame prediction to further save the bits required to encode the BV.

[0059] III. ISC Prediction Model

[0060] ISC technology divides a coded block into a series of pixel strings or unmatched pixels according to a certain scanning order (such as raster scanning, round-trip scanning, and Zig-Zag scanning). Similar to IBC, each string searches for a reference string of the same shape in the currently coded region of the image, derives the predicted value of the current string, and effectively saves bits by encoding the residual between the pixel value of the current string and the predicted value instead of directly encoding the pixel value. Figure 5 A schematic diagram of intra-frame string copying is given. The dark gray area represents the encoded area, the white 28 pixels represent string 1, the light gray 35 pixels represent string 2, and the black 1 pixel represents an unmatched pixel. The displacement between string 1 and its reference string is... Figure 5 The displacement between string vector 1 and string 2 and their reference string is... Figure 5 String vector 2 in the string vector.

[0061] Intra-frame string copying technology requires encoding the SV (Structured Value), string length, and a flag indicating whether a matching string exists for each string in the current coding block. Here, SV represents the offset of the string to be encoded from its reference string. String length represents the number of pixels contained in the string. Different implementations use various methods to encode the string length; the following are some examples (some examples may be combined): 1) Encode the string length directly in the bitstream; 2) Encode the number of pixels to be processed after processing the string in the bitstream, and the decoder calculates the current string length L = N - N1 - N2 based on the current block size N, the number of processed pixels N1, and the number of pixels to be processed N2 obtained from decoding; 3) Encode a flag in the bitstream indicating whether the string is the last string. If it is the last string, the current string length L = N - N1 is calculated based on the current block size N and the number of processed pixels N1. If a pixel does not find a corresponding reference in the referable area, the pixel value of the unmatched pixel will be directly encoded.

[0062] IV. Intra-frame prediction motion vector prediction in AVS3

[0063] IBC and ISC are two screen content coding tools in AVS3. Both use the current image as a reference and derive the predicted values ​​of coding units through motion compensation. Considering that IBC and ISC have similar reference areas, BV and SV have high correlation, and coding efficiency can be further improved by allowing predictions between them. AVS3 uses an intra-prediction history motion information table (IntraHMVP) similar to HMVP to record the displacement vector information, position information, size information, and repetition count of these two types of coding blocks, and derives BVP (Block Vector Predictor) and SVP (String Vector Predictor) from IntraHMVP. Here, BVP is the predicted value of the block vector, and SVP is the predicted value of the string vector. To support parallel coding, if the current largest coding unit is the first largest coding unit in the current row of the chip, the value of CntIntraHmvp in the intra-prediction history motion information table is initialized to 0.

[0064] 1. Derivation of the prediction block vector

[0065] AVS3 adopts Class-based Block Vector Prediction (CBVP), similar to HMVP. This method first uses a History-based Block Vector Prediction (HBVP) list to store information about historical IBC coded blocks. Besides recording the block value (BV) information of historical coded blocks, it also records information such as the position and size of the historical coded blocks. For the current coded block, candidate BVs in the HBVP are classified according to the following criteria:

[0066] Category 0: The area of ​​a historical coded block is greater than or equal to 64 pixels;

[0067] Category 1: BV frequency is greater than or equal to 2;

[0068] Category 2: The coordinates of the top-left corner of the historical encoded block are located to the left of the top-left corner coordinates of the current block;

[0069] Category 3: The coordinates of the top-left corner of the historical coded block are located above the coordinates of the top-left corner of the current block;

[0070] Category 4: The coordinates of the top-left corner of the historical coded block are located to the upper left of the top-left corner of the current block;

[0071] Category 5: The coordinates of the top-left corner of the historical encoded block are located to the upper right of the top-left corner coordinates of the current block;

[0072] Category 6: The coordinates of the top-left corner of the historical coded block are located to the lower left of the top-left corner coordinates of the current block;

[0073] In this process, instances within each category are arranged in reverse order of their encoding sequence (the closer the encoding sequence is to the current block, the higher the sort order). The BV corresponding to the first historical encoded block is the candidate BV for that category. Then, candidate BVs for each category are added to the CBVP list in order from category 0 to category 6. When adding a new BV to the CBVP list, it is necessary to check if a duplicate BV already exists in the CBVP list. Only if no duplicate BV exists is the BV added to the CBVP list. The encoder selects the best candidate BV from the CBVP list as the BVP and encodes an index in the bitstream representing the index of the category corresponding to the best candidate BV in the CBVP list. The decoder decodes the BVP from the CBVP list based on this index.

[0074] After decoding the current prediction unit, if the prediction type of the current prediction unit is Block Copy Intra-Prediction (IBC), when NumOfIntraHmvpCand is greater than 0, IntraHMVP is updated according to the block copy intra-prediction motion information of the current prediction block in the manner described below. The intra-prediction motion information of the current prediction block includes displacement vector information, position information, size information, and repetition count. The displacement vector information of the block copy intra-prediction block is the block vector; the position information includes the x-coordinate and y-coordinate of the top-left corner of the current prediction block; the size information is the product of the width and height; and the repetition count of the current prediction block is initialized to 0.

[0075] 2. Derivation of the prediction string vector

[0076] AVS3 encodes an index for each string in an ISC coded block, indicating the position of the string's SVP in the IntraHMVP. Similar to the skip mode in inter-frame prediction, the SV of the current string equals the SVP, so there is no need to encode the residual between SV and SVP.

[0077] After decoding the current prediction unit, if the prediction type of the current prediction unit is String Copy Intra-Prediction (ISC), when NumOfIntraHmvpCand is greater than 0, IntraHMVP is updated according to the String Copy Intra-Prediction Motion Information of the current prediction block in the manner described below. The String Copy Intra-Prediction Motion Information of the current prediction block includes displacement vector information, position information, size information, and repetition count. The displacement vector information of the current string is a string vector; the position information includes the x and y coordinates of the first pixel sample of the string, i.e., (xi, yi); the size information is the string length of this part, i.e., StrLen[i]; the repetition count is initialized to 0.

[0078] 3. Intra-frame prediction historical motion information table update

[0079] Intra-frame prediction motion information includes displacement vector information, position information, size information, and repetition count. After decoding the current prediction unit, if the prediction type of the current prediction unit is block copy intra-frame prediction or string copy intra-frame prediction, and NumOfIntraHmvpCand is greater than 0, the intra-frame prediction historical motion information table IntraHmvpCandidateList is updated according to the intra-frame prediction motion information of the current prediction block. The displacement vector information, position information, size information, and repetition count of IntraHmvpCandidateList[X] are denoted as intraMvCandX, posCandX, sizeCandX, and cntCandX, respectively; otherwise, the operation defined in this clause is not executed.

[0080] a) Initialize X to 0 and cntCur to 0.

[0081] b) If CntIntraHmvp equals 0, then IntraHmvpCandidateList[CntIntraHmvp] contains the intra-frame predicted motion information of the current prediction unit, and CntIntraHmvp is incremented by 1.

[0082] c) Otherwise, determine whether the intra-predicted motion information of the current prediction block and IntraHmvpCandidateList[X] are the same based on whether intraMvCur and intraMvCandX are equal:

[0083] 1) If intraMvCur and intraMvCandX are the same, execute step d); otherwise, increment X by 1.

[0084] 2) If X is less than CntIntraHmvp, proceed to step c); otherwise, proceed to step e).

[0085] d) cntCur equals the value of cntCandX plus 1. If sizeCur is less than sizeCandX, then the current sizeCur is equal to sizeCandX.

[0086] e) If X is less than CntIntraHmvp, then:

[0087] 1) Let i be from X to CntIntraHmvp-1, and let IntraHmvpCandidateList[i] be equal to IntraHmvpCandidateList[i+1];

[0088] 2) IntraHmvpCandidateList[CntIntraHmvp-1] equals the intra-frame predicted motion information of the current prediction unit.

[0089] f) Otherwise, if X equals CntIntraHmvp and CntIntraHmvp equals NumOfIntraHmvpCand, then:

[0090] 1) Let i range from 0 to CntIntraHmvp-1, and set IntraHmvpCandidateList[i] equal to IntraHmvpCandidateList[i+1];

[0091] 2) IntraHmvpCandidateList[CntIntraHmvp-1] equals the intra-frame predicted motion information of the current prediction unit.

[0092] g) Otherwise, if X equals CntIntraHmvp and CntIntraHmvp is less than NumOfIntraHmvpCand, then IntraHmvpCandidateList[CntIntraHmvp] equals the intra-frame predicted motion information of the current prediction unit, and CntIntraHmvp is incremented by 1.

[0093] In the current AVS3 standard, the maximum length of IntraHMVP is 12. In the first maximum coding unit of the current line, IntraHMVP is reset to empty, and updated using motion information contained in the encoded / decoded IBC or ISC coding units. When IntraHMVP is not full, it cannot provide enough predicted displacement vectors. Furthermore, when the IntraHMVP length is 0, additional indexes for the displacement vectors still need to be encoded, but no effective predicted displacement vectors can be provided, which negatively impacts coding efficiency.

[0094] This application proposes a method for constructing a motion information list. When motion information is insufficient, this method provides additional motion information to the motion information list to achieve better displacement vector prediction results and improve video compression performance.

[0095] like Figure 6 The diagram illustrates a simplified block diagram of a communication system provided in one embodiment of this application. The communication system 200 includes a plurality of devices that can communicate with each other via, for example, a network 250. For example, the communication system 200 includes a first device 210 and a second device 220 interconnected via the network 250. Figure 6In this embodiment, the first device 210 and the second device 220 perform unidirectional data transmission. For example, the first device 210 may encode video data, such as a video image stream captured by the first device 210, for transmission to the second device 220 via network 250. The encoded video data is transmitted in the form of one or more encoded video streams. The second device 220 may receive the encoded video data from network 250, decode the encoded video data to recover the video data, and display video images based on the recovered video data. Unidirectional data transmission is common in applications such as media services.

[0096] In another embodiment, the communication system 200 includes a third device 230 and a fourth device 240 that perform bidirectional transmission of encoded video data, which may occur, for example, during a video conference. For bidirectional data transmission, each of the third device 230 and the fourth device 240 may encode video data (e.g., a stream of video images captured by the device) for transmission over network 250 to the other device. Each of the third device 230 and the fourth device 240 may also receive encoded video data transmitted by the other device, decode the encoded video data to recover the video data, and display the video images on an accessible display device based on the recovered video data.

[0097] exist Figure 6 In the embodiments described, the first device 210, the second device 220, the third device 230, and the fourth device 240 may be computer devices such as servers, personal computers, and smartphones, but the principles disclosed in this application are not limited to these. The embodiments of this application are applicable to PCs (Personal Computers), mobile phones, tablets, media players, and / or dedicated video conferencing equipment. Network 250 refers to any number of networks that transmit encoded video data between the first device 210, the second device 220, the third device 230, and the fourth device 240, including, for example, wired and / or wireless communication networks. Communication network 250 may exchange data in circuit-switched and / or packet-switched channels. This network may include telecommunications networks, local area networks, wide area networks, and / or the Internet. For the purposes of this application, unless explained below, the architecture and topology of network 250 may be irrelevant to the operation of the disclosures in this application.

[0098] As an example, Figure 7The diagram illustrates the placement of a video encoder and a video decoder in a streaming environment. The subject matter disclosed in this application is equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, storing compressed video on digital media including CDs (Compact Discs), DVDs (Digital Versatile Discs), memory sticks, etc.

[0099] The streaming system may include an acquisition subsystem 313, which may include a video source 301 such as a digital camera, which creates an uncompressed video image stream 302. In an embodiment, the video image stream 302 includes samples captured by a digital camera. The video image stream 302 is depicted as a thick line to emphasize the high data volume of the video image stream compared to encoded video data 304 (or encoded video bitstream). The video image stream 302 may be processed by an electronic device 320, which includes a video encoder 303 coupled to the video source 301. The video encoder 303 may include hardware, software, or a combination of hardware and software to implement or enforce aspects of the disclosed subject matter as described in more detail below. The encoded video data 304 (or encoded video bitstream 304) is depicted as a thin line to emphasize the lower data volume of the encoded video data 304 (or encoded video bitstream 304), which may be stored on a streaming server 305 for future use. One or more streaming client subsystems, such as Figure 7 Client subsystems 306 and 308 can access streaming server 305 to retrieve copies 307 and 309 of encoded video data 304. Client subsystem 306 may include, for example, a video decoder 310 in electronic device 330. Video decoder 310 decodes the incoming copy 307 of the encoded video data and produces an output video picture stream 311 that can be displayed on display 312 (e.g., a screen) or another presentation device (not depicted). In some streaming systems, the encoded video data 304, video data 307, and video data 309 (e.g., video stream) may be encoded according to certain video encoding / compression standards.

[0100] It should be noted that electronic devices 320 and 330 may include other components (not shown). For example, electronic device 320 may include a video decoder (not shown), and electronic device 330 may also include a video encoder (not shown). The video decoder is used to decode received encoded video data; the video encoder is used to encode the video data.

[0101] It should be noted that the technical solutions provided in this application can be applied to H.266 / VVC standards, H.265 / HEVC standards, AVS (such as AVS3), or next-generation video codec standards, and this application does not limit them.

[0102] It should also be noted that the execution entity for each step of the method provided in this application embodiment can be either a decoding device or an encoding device. The technical solutions provided in this application embodiment can be used to construct the motion information list during both video decoding and video encoding processes. Both the decoding device and the encoding device can be computer devices, which refer to electronic devices with data computing, processing, and storage capabilities, such as PCs, mobile phones, tablets, media players, dedicated video conferencing equipment, servers, etc.

[0103] Furthermore, the method provided in this application can be used alone or in combination with other methods in any order. The encoder and decoder based on the method provided in this application can be implemented by one or more processors or one or more integrated circuits. The technical solution of this application will be described below through several embodiments.

[0104] Please refer to Figure 8 This document illustrates a flowchart of a method for constructing a motion information list in video encoding and decoding according to an embodiment of this application. For ease of explanation, the description focuses on a computer device as the execution subject of each step. The method may include the following steps (801-803):

[0105] Step 801: Obtain the initial list of motion information.

[0106] In this embodiment, the motion information list is a list used to record and index motion information. Motion information includes displacement vectors, such as the motion vector (MV) of the inter-frame prediction mode, the block vector (BV) of the IBC prediction mode, and the string vector (SV) of the ISC prediction mode, as described above.

[0107] The initial motion information list refers to the list of motion information that is initialized. In one example, this initial motion information list is empty, meaning it contains no motion information or contains zero pieces of motion information. In another example, the initial motion information list is not empty, meaning it contains one or more pieces of motion information.

[0108] In an exemplary embodiment, the initial motion information list refers to the motion information list that is initialized and constructed when encoding (or decoding) each CTU line in the image begins; or, the initial motion information list refers to the motion information list that is initialized and constructed when encoding (or decoding) each slice in the image begins.

[0109] In the embodiments of this application, an image refers to a frame or field in a video. An image can be divided into multiple CTU rows, and each CTU row may include one or more CTUs. Alternatively, an image can also be divided into multiple patches, where a patch refers to a group of adjacent maximum coding units arranged in raster scan order, and a patch may include one or more CTUs. In a possible embodiment, when encoding (or decoding) begins for each CTU row in the image, or when encoding (or decoding) begins for each patch in the image, the motion information list is reset, i.e., the motion information list is initialized to be empty.

[0110] Step 802: If the length of the motion information list meets the condition, determine at least one piece of motion information.

[0111] The length of the motion information list refers to the number of motion information entries included in the list. After obtaining the initial motion information list, the computer device further determines its length. As motion information is added to or removed from the list, its length changes accordingly. For example, adding a motion information entry increases the list's length by 1; removing a motion information entry decreases the list's length by 1.

[0112] In one example, the condition is that the length of the motion information list is 0, that is, the motion information list is empty. Given that the initial length of the motion information list is 0, it is determined that the length of the initial motion information list meets the condition, and then the initial motion information list is initialized and updated by performing the following steps.

[0113] In another example, the condition above is that the length of the motion information list is less than the maximum length. Here, the maximum length refers to the maximum number of motion information entries allowed in the list. For example, assuming the maximum length of the motion information list is N, it means that the maximum number of motion information entries allowed in the list is N, where N is a positive integer. If the initial length of the motion information list is less than the maximum length, it is determined that the length of the initial motion information list meets the condition. Then, the initial motion information list is initialized and updated by performing the following steps.

[0114] In another example, the condition described above is that the length of the motion information list is less than a preset threshold. Optionally, this preset threshold is less than the maximum length of the motion information list. For example, assuming the maximum length of the motion information list is 6, the preset threshold could be 2. This preset threshold can be specified in a standard or protocol, or indicated by the encoder to the decoder in the bitstream; this embodiment does not limit this. If the initial length of the motion information list is less than the preset threshold, it is determined that the length of the initial motion information list meets the condition, and then the initial motion information list is initialized and updated by performing the following steps.

[0115] Furthermore, the at least one piece of motion information mentioned above refers to the motion information to be added to the initial motion information list in order to initialize and update the initial motion information list. This at least one piece of motion information can be preset (e.g., specified in a standard or protocol) or determined in other ways, as detailed in the embodiments below.

[0116] Step 803: Add at least one of the above motion information to the motion information list to obtain the initialized and updated motion information list.

[0117] In one example, no duplicate checking is performed; at least one of the aforementioned motion information pieces is directly added to the motion information list. For instance, if the motion information list is empty, at least one of the aforementioned motion information pieces can be directly added to the list without performing a duplicate checking; or, even if the motion information list is not empty, at least one of the aforementioned motion information pieces can be directly added to the list without performing a duplicate checking.

[0118] In another example, the motion information to be added is compared with the existing motion information in the motion information list for duplicate checking; the motion information list is then initialized and updated based on the duplicate checking results to obtain the initialized and updated motion information list. For example, if the motion information to be added is the same as an existing motion information in the motion information list (denoted as the target motion information), it indicates a duplicate. The computer device can either delete the target motion information from the list and then add the motion information to be added, or it can choose not to add the motion information to be added. Optionally, motion information is added to the motion information list one by one, and a duplicate checking is performed on each added motion information compared with the existing motion information in the list. Alternatively, assuming the current length of the motion information list is L, each added motion information is compared with the first L items of the current motion information list for duplicate checking. This is because, generally, there are no duplicates among the motion information added during initialization and update. Alternatively, similar to the duplicate checking method for the candidate block vector list, only the displacement vectors of category 0 and category 1 are compared for duplicate checking. Of course, the duplicate checking methods described above are only exemplary and illustrative, and the embodiments of this application do not limit the use of other methods.

[0119] Optionally, when adding motion information to the motion information list, the motion information to be added can be added one by one from the end of the motion information list according to the First Input First Output (FIFO) principle.

[0120] In summary, the technical solution provided in this application updates the initial motion information list by filling it with additional motion information when the initial motion information list is insufficient. This provides more effective displacement vectors in the motion information list, resulting in better displacement vector prediction and improved video compression performance.

[0121] In an exemplary embodiment, taking the decoding end as an example, the derivation of the predicted displacement vector may include the following three steps:

[0122] 1. Use a historical motion information list to record the motion information of historical prediction units (such as decoded blocks or decoded strings) during the decoding process in a first-in-first-out manner;

[0123] 2. When decoding the displacement vector of the current prediction unit (such as the current block or the current string), a candidate motion information list is derived by combining the historical motion information list with other motion information;

[0124] 3. Obtain the position (or index) of the predicted displacement vector of the current prediction unit in the candidate motion information list from the bitstream, and derive the predicted displacement vector of the current prediction unit.

[0125] In the embodiments of this application, a historical prediction unit refers to an encoded (or decoded) image unit, which may include one or more pixels and may be block-shaped or string-shaped. For inter-frame prediction mode and IBC prediction mode, the historical prediction unit is also called a historical block, which refers to an encoded (or decoded) image block. For ISC prediction mode, the historical prediction unit is also called a historical string, which refers to an encoded (or decoded) image string.

[0126] The current prediction unit refers to the currently encoded (or decoded) image unit. This image unit can also include one or more pixels, and it can be in block or string form.

[0127] This application proposes a method for constructing a motion information list. When motion information is insufficient, this method can provide additional motion information to the motion information list. There are two methods: Method 1 is to fill the historical motion information list in step 1 above, and Method 2 is to fill the candidate motion information list in step 2 above. These two methods can be used alone or in combination.

[0128] In this embodiment, method 1 will be described. The motion information list is a historical motion information list, which is used to record historical motion information.

[0129] In one example, when encoding or decoding each CTU row in the image, an initial list of historical motion information is obtained, and then the initial list of historical motion information is updated using at least one piece of motion information.

[0130] In another example, when encoding or decoding each slice in the image, an initial list of historical motion information is obtained, and then this initial list of historical motion information is initialized and updated using at least one piece of motion information.

[0131] Optionally, the initial historical motion information list is empty. When initializing and updating this initial historical motion information list, the number of motion information entries added to the list can be equal to or less than the maximum length of the historical motion information list.

[0132] Optionally, when populating the list of historical sports information, the sports information to be added includes at least one of the following:

[0133] 1. Motion information contained in the historical motion information list after the target CTU encoding or decoding is completed;

[0134] For example, the target CTU can be the CTU in the previous CTU row of the CTU row where the current cell is located, such as the first CTU in the previous CTU row; or, the target CTU can also be the CTU in the previous slice of the slice where the current cell is located, such as the first CTU in the previous slice.

[0135] For example, the encoder can record a list of historical motion information after the target CTU has been encoded, and then use the motion information in the recorded list of historical motion information to initialize and update the initial list of historical motion information.

[0136] For example, the decoding end can record a list of historical motion information after the target CTU has been decoded, and then use the motion information in the recorded historical motion information list to initialize and update the initial historical motion information list.

[0137] 2. Motion information contained in the sequence header or image header;

[0138] In this example, the encoder can add some motion information for initialization updates to the sequence header or image header, and then the decoder can decode the motion information for initialization updates from the sequence header or image header.

[0139] In some standards, an image sequence, also called a video sequence, is the highest-level syntax structure of a coded bitstream, consisting of one or more consecutive images. The sequence header of an image sequence contains information relevant to decoding that image sequence. Similarly, the image header of an image contains information relevant to decoding that image.

[0140] 3. At least one preset motion information.

[0141] Optionally, the preset motion information can be specified in advance in a standard or protocol.

[0142] Optionally, the preset motion information includes a displacement vector. This displacement vector includes at least one of the following: (0,0), (-w,0), (-2*w,0), (0,-h), (0,-2*h), (-w,-h), (-w,-2*h), (-2*w,-h), (-2*w,-2*h); where w is the width of the smallest decoding unit and h is the height of the smallest decoding unit. Optionally, the smallest decoding unit in this document refers to the smallest CU size allowed by the encoder or decoder; that is, the width of the smallest decoding unit refers to the minimum width of the CU allowed by the encoder or decoder, and the height of the smallest decoding unit refers to the minimum height of the CU allowed by the encoder or decoder.

[0143] Optionally, the aforementioned preset motion information also includes at least one of the following: position information, size information, and repetition count of the displacement vector. Optionally, when the historical motion information list is a category-based historical motion information list, such as HBVP as described above, the position information, size information, and repetition count of the displacement vector will affect the category to which the displacement vector belongs.

[0144] Optionally, the preset motion information also includes position information. Assume the top-left corner coordinates of the current CTU are (x, y), the image width is pic_w, the image height is pic_h, the current CTU width is ctu_w, and the current CTU height is ctu_h. This position information includes at least one of the following:

[0145] (1) The coordinates of the left boundary pixel of the image, with the x-coordinate being 0 and the y-coordinate ranging from [0, pic_h-1];

[0146] (2) The coordinates of the upper boundary pixel of the image, with the x-coordinate ranging from [0, pic_w-1] and the y-coordinate being 0;

[0147] (3) The coordinates of the left boundary pixel of the current CTU row, with the horizontal coordinate being 0 and the vertical coordinate ranging from [y, y+ctu_h-1].

[0148] (4) The coordinates of the upper boundary pixel of the current CTU row, with the x-coordinate ranging from [0, pic_w-1] and the y-coordinate;

[0149] (5) The coordinates of the left boundary pixel of the current CTU, with the horizontal coordinate being x and the vertical coordinate ranging from [y, y+ctu_h-1].

[0150] (6) The coordinates of the upper boundary pixel of the current CTU, with the horizontal coordinate ranging from [x, x+ctu_w-1] and the vertical coordinate being y.

[0151] Optionally, the preset motion information includes size information. Optionally, the value of the size information is less than or equal to a first threshold. For example, the first threshold may be the threshold corresponding to category 0 in the candidate BV classification in HBVP, i.e., the first threshold is 64 pixels. In one example, the value of the size information is set to the size of the smallest coding unit (i.e., CU).

[0152] Optionally, the preset motion information includes the number of repetitions. Optionally, the value of the number of repetitions is less than or equal to a second threshold. For example, the second threshold could be the threshold corresponding to category 1 in the candidate BV classification in HBVP, i.e., the second threshold is 2. In one example, the value of the number of repetitions is initialized to 0.

[0153] In this embodiment, by setting information such as position information, size information, and repetition count corresponding to the displacement vector in the preset motion information, the classification of the preset motion information can be controlled, ensuring that the preset motion information is assigned to an appropriate category. This reserves a suitable position for motion information subsequently added to the list, which helps improve encoding and decoding performance. For example, by limiting the value of the size information to be less than or equal to a first threshold, or limiting the value of the repetition count to be less than or equal to a second threshold, the preset motion information will not occupy category 0 and category 1, but will occupy some lower priority categories, reserving a suitable position for motion information subsequently added to the list.

[0154] Optionally, the maximum length of the historical motion information list is N, where N is a positive integer. Initializing and updating this historical motion information list involves adding M motion information entries to the end of the list, where M is a positive integer less than or equal to N. For example, if the maximum length of the historical motion information list is 7, initializing and updating it involves adding two motion information entries to the end of the list. One entry includes a displacement vector (-w,0), position information (0,0), size information (8*8), and repetition count 0. The other entry includes a displacement vector (0,-h), position information (0,0), size information (4*4), and repetition count 0.

[0155] Additionally, when filling the historical motion information list with preset motion information, you can directly fill it with (0,0). In one example, assuming the maximum length of the historical motion information list is N, and the current length of the list is M (M is less than N), if you fill the historical motion information list with preset displacement vectors, you can fill the historical motion information list with MN displacement vectors, and all MN displacement vectors are (0,0).

[0156] In addition, when initializing and updating the initial list of historical motion information, duplicate checks can be performed.

[0157] In summary, in this embodiment, when the historical motion information list is insufficient, additional motion information is used to fill it, thereby enabling the historical motion information list to provide more and more effective candidate displacement vectors.

[0158] In this embodiment, method 2 will be described. The motion information list is a candidate motion information list, which is used to provide candidate predicted displacement vectors.

[0159] In one example, if the length of the candidate motion information list is less than a threshold, the candidate motion information list is initialized and updated using at least one piece of motion information.

[0160] Optionally, the above threshold value is the maximum length of the candidate motion information list. For example, assuming the maximum length of the candidate motion information list is 4, then if the length of the candidate motion information list is less than 4, additional motion information is used to fill the candidate motion information list.

[0161] Optionally, the threshold value is less than the maximum length of the candidate motion information list. For example, assuming the maximum length of the candidate motion information list is 4, the threshold value can be set to 2. Then, if the length of the candidate motion information list is less than 2, additional motion information is used to fill the candidate motion information list.

[0162] Optionally, when populating the candidate motion information list, the motion information to be added includes at least one of the following:

[0163] 1. Motion information contained in the sequence header or image header;

[0164] In this example, the encoder can add some motion information for initialization updates to the sequence header or image header, and then the decoder can decode the motion information for initialization updates from the sequence header or image header.

[0165] 2. At least one preset motion information;

[0166] Optionally, the preset motion information can be specified in advance in a standard or protocol.

[0167] Optionally, the preset motion information includes a displacement vector. The displacement vector includes at least one of the following: (0,0), (-w,0), (-2*w,0), (0,-h), (0,-2*h), (-w,-h), (-w,-2*h), (-2*w,-h), (-2*w,-2*h).

[0168] In one example, w is the width of the current codec unit, and h is the height of the current codec unit. In this document, the current codec unit refers to the CU currently being encoded or decoded. That is, the width of the current codec unit refers to the width of the CU currently being encoded or decoded, and the height of the current codec unit refers to the height of the CU currently being encoded or decoded.

[0169] In another example, w is the width of the smallest decoding unit, and h is the height of the smallest decoding unit. In this paper, the smallest decoding unit refers to the minimum size CU allowed by the encoder or decoder; that is, the width of the smallest decoding unit mentioned above refers to the minimum width of the CU allowed by the encoder or decoder, and the height of the smallest decoding unit refers to the minimum height of the CU allowed by the encoder or decoder.

[0170] The above section introduced two methods for setting the displacement vector included in the preset motion information. Setting the preset displacement vector based on the width and height of the current codec unit results in high accuracy. Setting the preset displacement vector based on the width and height of the smallest codec unit reduces complexity, eliminating the need for the codec to dynamically adjust the preset displacement vector for each codec unit.

[0171] Additionally, when filling the candidate motion information list with preset displacement vectors, you can directly fill it with (0,0). In one example, assuming the maximum length of the candidate motion information list is 7 and the current length of the list is 4, if you fill the candidate motion information list with preset displacement vectors, you can fill the candidate motion information list with 3 displacement vectors, all of which are (0,0).

[0172] 3. Motion information derived from other historical motion information lists, which include historical motion information lists of codec units that use different prediction modes than the current codec unit;

[0173] If multiple historical motion information lists exist, motion information can be exported from other non-empty historical motion information lists to populate candidate motion information lists where current motion information is insufficient. For example, if the candidate motion information list is used to provide the predicted displacement vector for the IBC prediction mode or the ISC prediction mode, other historical motion information lists include the historical motion information lists corresponding to the inter-frame prediction mode. As another example, if the candidate motion information list is used to provide the predicted displacement vector for the inter-frame prediction mode, other historical motion information lists include the historical motion information lists corresponding to the IBC prediction mode or the ISC prediction mode.

[0174] In one example, there are two historical motion information lists. One historical motion information list, called HMVP, records the motion information of historical units in the inter-frame prediction mode; the other historical motion information list, called IntraHMVP, records the motion information of historical units in the IBC and ISC prediction modes. When deriving candidate displacement vectors for the IBC and ISC prediction modes, if the displacement vectors in the candidate motion information lists for the IBC and ISC prediction modes are insufficient, they can be filled using displacement vectors from the HMVP.

[0175] 4. Motion information of spatially adjacent units of the current encoding / decoding unit;

[0176] The spatially adjacent units of the current encoding / decoding unit refer to the image units that are spatially adjacent to the current encoding / decoding unit, such as those with overlapping edges or vertices.

[0177] Optionally, if the prediction mode of the current codec unit is IBC prediction mode or ISC prediction mode, then the spatial neighbor unit includes spatial neighbor units using either IBC prediction mode or ISC prediction mode. For example, if the prediction mode of the current codec unit is IBC prediction mode, then the spatial neighbor unit includes spatial neighbor units using IBC prediction mode, or includes spatial neighbor units using ISC prediction mode, or includes both IBC prediction mode and ISC prediction mode. As another example, if the prediction mode of the current codec unit is ISC prediction mode, then the spatial neighbor unit includes spatial neighbor units using ISC prediction mode, or includes spatial neighbor units using IBC prediction mode, or includes both IBC prediction mode and IBC prediction mode.

[0178] Optionally, if the prediction mode of the current encoding / decoding unit is inter-frame prediction mode, then the spatially adjacent units include spatially adjacent units that adopt inter-frame prediction mode.

[0179] By using the above method to populate the list with motion information of the same or similar prediction modes, the effectiveness of the displacement vectors filled into the candidate motion information list can be improved, thereby improving coding performance.

[0180] In addition, the spatially adjacent units of the current codec unit may include one or more CUs, and the CU may include one or more prediction units (such as codec blocks or codec strings). Then the displacement vector added to the candidate motion information list may be the displacement vector of all or part of the prediction units in the spatially adjacent units, such as the displacement vector of the prediction unit closest to the current codec unit.

[0181] 5. Motion information determined based on information recorded in a historical unit list, which contains information on at least one historical encoding / decoding unit.

[0182] In an exemplary embodiment, a historical unit list can be constructed to record information about historical codec units. Optionally, the information about the historical codec units includes, but is not limited to, at least one of the following: the position coordinates of the historical codec unit, the size information of the historical codec unit, and the displacement vector of the historical codec unit. In this document, a historical codec unit refers to a CU that has completed encoding or decoding.

[0183] For example, suppose the historical cell list includes a historical codec cell with coordinates (xi, yi). If the prediction mode of the current codec cell is IBC prediction mode, and the top-left corner coordinates of the current codec cell are (x, y), then the motion information determined based on the information recorded in the historical cell list includes the displacement vector (xi-x, yi-y), and this displacement vector (xi-x, yi-y) is filled into the candidate motion information list. If the prediction mode of the current codec cell is ISC prediction mode, and the coordinates of the first pixel of the current string in the current codec cell are (x, y), then the motion information determined based on the information recorded in the historical cell list includes the displacement vector (xi-x, yi-y), and this displacement vector (xi-x, yi-y) is filled into the candidate motion information list.

[0184] Optionally, the information recorded in the historical unit list includes at least one of the following:

[0185] (1) Record information of historical codec units whose prediction mode is IBC prediction mode or ISC prediction mode;

[0186] (2) If the prediction mode of the historical codec unit is IBC prediction mode or inter-frame prediction mode, record the coordinates of the upper left corner of at least one codec block contained in the historical codec unit.

[0187] (3) If the prediction mode of the historical unit is ISC prediction mode, record the coordinates of at least one codec string (hereinafter referred to as "string") contained in the historical codec unit. Optionally, record the coordinates of all strings contained in the historical unit, or record the coordinates of strings contained in the historical unit whose length is greater than a threshold.

[0188] In addition, when initializing and updating the initial candidate motion information list, duplicate comparison can be performed.

[0189] In summary, in this embodiment, when the motion information contained in the candidate motion information list is insufficient, additional motion information is used to fill in the gaps, thereby enabling the candidate motion information list to provide more and more effective predicted displacement vectors.

[0190] It should be noted that the technical solutions provided in the embodiments of this application can be applied to the additional filling of the motion information list in intra-frame prediction mode, and can also be applied to the additional filling of the motion information list in inter-frame prediction mode.

[0191] In one example, the technical solution provided in this application embodiment is used to additionally populate the motion information list in IBC prediction mode. For example, the method described above is used to additionally populate the historical motion information list and / or candidate motion information list in IBC prediction mode.

[0192] In another example, the technical solution provided in this application embodiment is used for additional population of the motion information list in ISC prediction mode. For example, the method described above is used to additionally populate the historical motion information list and / or candidate motion information list in ISC prediction mode.

[0193] In another example, the technical solution provided in this application is used to additionally populate the motion information list shared by the IBC prediction mode and the ISC prediction mode. For example, the IBC prediction mode and the ISC prediction mode can share a historical motion information list, such as the IntraHMVP described above. Alternatively, the IBC prediction mode and the ISC prediction mode can also share a candidate motion information list, which is not limited in this application.

[0194] The following is a description of the prediction block vector derivation from the AVS3 standard text, where IntraHmvpCandidateList is the list of historical motion information, NumOfIntraHmvpCand is the maximum allowed length of the list, CntIntraHmvp is the actual length of the list, and the coordinates of the prediction block vector are (MvPredXBv, MvPredYBv):

[0195] The width and height of the current prediction cell are denoted as widthCur and heightCur, respectively. The x-coordinate and y-coordinate of the top-left corner of the current prediction cell are denoted as xCur and yCur, respectively. For X = 0 to NumOfIntraHmvpCand-1, the width and height of IntraHmvpCandidateList[X] are denoted as widthCandX and heightCandX, the x-coordinate and y-coordinate of the top-left corner of IntraHmvpCandidateList[X] are denoted as xCandX and yCandX, the size of IntraHmvpCandidateList[X] is denoted as sizeCandX, the number of repetitions of IntraHmvpCandidateList[X] is denoted as cntCandX, and the displacement vector of IntraHmvpCandidateList[X] is denoted as intraMvCandX.

[0196] First, construct the class blockMotionClassY (Y = 0~6) by following these steps:

[0197] a) Initialize the number of candidate blocks for intra-frame prediction historical motion information, NumAllowedHbvpCand, to Min(CntIntraHmvp, NumOfIntraHmvpCand).

[0198] b) If NumAllowedHbvpCand equals 0, and MvPredXBv and MvPredYBv both equal 0, end the export process; otherwise, continue with the following steps.

[0199] c) Otherwise (i.e., if NumAllowedHbvpCand is not equal to 0), Y ranges from 0 to 6, and the number of block copy intra-prediction motion information candidates in each category blockMotionClassY is initialized to 0. For X = 0 to NumAllowedHbvpCand-1, IntraHmvpCandidateList[X] is classified as follows:

[0200] 1) If sizeCandX is greater than or equal to 64, add IntraHmvpCandidateList[X] to blockMotionClass0 and increment the value of cntClassY by 1;

[0201] 2) If cntCandX is greater than or equal to 3, add IntraHmvpCandidateList[X] to blockMotionClass1 and increment the value of cntClassY by 1;

[0202] 3) If xCandX is less than xCur and yCandX is less than yCur, add IntraHmvpCandidateList[X] to blockMotionClass4 and increment the value of cntClassY by 1;

[0203] 4) Otherwise, if xCandX is greater than or equal to xCur+widthCur, add IntraHmvpCandidateList[X] to blockMotionClass5 and increment the value of cntClassY by 1;

[0204] 5) Otherwise, if yCandX is greater than or equal to yCur+heightCur, add IntraHmvpCandidateList[X] to blockMotionClass6 and increment the value of cntClassY by 1;

[0205] 6) Otherwise, if yCandX is less than yCur, add IntraHmvpCandidateList[X] to blockMotionClass3 and increment the value of cntClassY by 1;

[0206] 7) Otherwise, add IntraHmvpCandidateList[X] to blockMotionClass2 and increment the value of cntClassY by 1.

[0207] Then, denote the block vector of intra-block copy motion information in blockMotionClassY as bvClassY, and derive the candidate class list CbvpCandidateList as follows:

[0208] a) Initialize cntCbvp, cntCheck, and Y to 0;

[0209] b) If the value of cntClassY is greater than 0, perform the following steps:

[0210] 1) Initialize candIdx to 0;

[0211] 2) If cntCbvp equals 0, the block vector of CbvpCandidateList[cntCbvp] equals bvClassY, cntCbvp is incremented by 1, and step c) is executed;

[0212] 3) Otherwise, if the block vector of CbvpCandidateList[candIdx] is the same as bvClassY, proceed to step c);

[0213] 4) Otherwise, increment candIdx by 1. If candIdx is less than cntCheck, proceed to step 3).

[0214] 5) Otherwise, the block vector of CbvpCandidateList[cntCbvp] is equal to bvClassY, and cntCbvp is incremented by 1.

[0215] c) Increment the value of Y by 1 and perform the following steps:

[0216] 1) If the value of Y is less than or equal to 2, set the value of cntCheck to cntCbvp, and then continue to step b);

[0217] 2) Otherwise, if Y is less than 7, continue with step b);

[0218] 3) Otherwise, the export process of CbvpCandidateList ends.

[0219] If cntCbvp equals 0, then MvPredXBv and MvPredYBv are both equal to 0. Otherwise, MvPredXBv and MvPredYBv are equal to the x and y coordinates of CbvpCandidateList[CbvpIndex], respectively.

[0220] The following are two examples where the sentence in the standard document, "If cntCbvp equals 0, MvPredXBv and MvPredYBv both equal 0. Otherwise, MvPredXBv and MvPredYBv are equal to the x and y coordinates of CbvpCandidateList[CbvpIndex] respectively," needs to be modified as follows:

[0221] Example 1: Using the method provided in Method 2 of the above embodiments, the candidate class list CbvpCandidateList is populated with (0,0). The text is modified as follows:

[0222] If cntCbvp is less than 7, Y ranges from cntCbvp to 6, and the block vector of CbvpCandidateList[cntCbvp] is equal to (0,0). MvPredXBv and MvPredYBv are equal to the x and y coordinates of CbvpCandidateList[CbvpIndex], respectively.

[0223] Example 2: Using the method provided in Method 2 of the above embodiments, the candidate class list CbvpCandidateList is populated with (0,0), (-w,0), (0,-h), (-w,-h), (-2*w,0), (0,-2*h), (-2*w,-2*h). The text is modified as follows:

[0224] If cntCbvp is less than 7, perform the following steps:

[0225] a) Initialize Y to 0;

[0226] b) Perform the following steps:

[0227] 1) Initialize candIdx to 0;

[0228] 2) If cntCbvp equals 0, the block vector of CbvpCandidateList[cntCbvp] equals InitialIntraMvList[Y], cntCbvp is incremented by 1, and step c) is executed;

[0229] 3) Otherwise, if the block vector of CbvpCandidateList[candIdx] is the same as InitialIntraMvList[Y], proceed to step c);

[0230] 4) Otherwise, increment candIdx by 1. If candIdx is less than cntCbvp, proceed to step 3).

[0231] 5) Otherwise, the block vector of CbvpCandidateList[cntCbvp] is equal to InitialIntraMvList[Y], and cntCbvp is incremented by 1.

[0232] c) Increment the value of Y by 1 and perform the following steps:

[0233] 1) If Y is less than 7, continue with step b);

[0234] 2) Otherwise, the export process of CbvpCandidateList ends.

[0235] The InitialIntraMvList has a length of 7, and the 0th to 6th items are (0,0), (-w,0), (0,-h), (-w,-h), (-2*w,0), (0,-2*h), and (-2*w,-2*h) respectively. MvPredXBv and MvPredYBv are equal to the x and y coordinates of CbvpCandidateList[CbvpIndex], respectively.

[0236] The following are embodiments of the apparatus described in this application, which can be used to execute the embodiments of the method described in this application. For details not disclosed in the apparatus embodiments of this application, please refer to the embodiments of the method described in this application.

[0237] Please refer to Figure 9This diagram illustrates a block diagram of a motion information list construction apparatus in video encoding and decoding according to an embodiment of this application. The apparatus has the functionality to implement the method example described above; this functionality can be implemented in hardware or by hardware executing corresponding software. The apparatus 900 can be the computer device described above, or it can be mounted on a computer device. The apparatus 900 may include: a list acquisition module 910, an information determination module 920, and a list update module 930.

[0238] The list acquisition module 910 is used to acquire an initial list of motion information.

[0239] The information determination module 920 is used to determine at least one piece of motion information when the length of the motion information list meets the condition; wherein, the length refers to the number of pieces of motion information included in the motion information list.

[0240] The list update module 930 is used to add the at least one motion information to the motion information list to obtain the initialized and updated motion information list.

[0241] In an exemplary embodiment, the motion information list is a historical motion information list, which is used to record historical motion information.

[0242] In an exemplary embodiment, the list update module 930 is configured to:

[0243] When encoding or decoding each CTU row in the image, the historical motion information list is initialized and updated using the at least one motion information.

[0244] or,

[0245] When encoding or decoding each slice in the image, the historical motion information list is initialized and updated using the at least one motion information.

[0246] In an exemplary embodiment, the at least one motion information includes at least one of the following:

[0247] The motion information contained in the historical motion information list after the target CTU encoding or decoding is completed;

[0248] Motion information contained in the sequence header or image header;

[0249] At least one preset motion information.

[0250] In an exemplary embodiment, the preset motion information includes a displacement vector; the displacement vector includes at least one of the following:

[0251] (0,0), (-w,0), (-2*w,0), (0,-h), (0,-2*h), (-w,-h), (-w,-2*h), (-2*w,-h), (-2*w,-2*h);

[0252] Where w is the width of the smallest decoding unit and h is the height of the smallest decoding unit.

[0253] In an exemplary embodiment, the preset motion information includes position information; the position information includes at least one of the following:

[0254] The coordinates of the left boundary pixel of the image, with the x-coordinate being 0 and the y-coordinate ranging from [0, pic_h-1].

[0255] The coordinates of the upper boundary pixel of the image, with the x-coordinate ranging from [0, pic_w-1] and the y-coordinate being 0;

[0256] The coordinates of the left boundary pixel of the current CTU row, with the x-coordinate being 0 and the y-coordinate ranging from [y, y+ctu_h-1].

[0257] The coordinates of the upper boundary pixel of the current CTU row, with the x-coordinate ranging from [0, pic_w-1] and the y-coordinate;

[0258] The coordinates of the left boundary pixel of the current CTU, with the x-coordinate being x and the y-coordinate ranging from [y, y+ctu_h-1].

[0259] The coordinates of the upper boundary pixel of the current CTU, with the x-coordinate ranging from [x, x+ctu_w-1] and the y-coordinate;

[0260] Wherein, the top-left corner coordinates of the current CTU are (x, y), the width of the image is pic_w, the height of the image is pic_h, the width of the current CTU is ctu_w, and the height of the current CTU is ctu_h.

[0261] In an exemplary embodiment, the preset motion information includes size information, the value of which is less than or equal to a first threshold.

[0262] In an exemplary embodiment, the preset motion information includes the number of repetitions, the value of which is less than or equal to a second threshold.

[0263] In an exemplary embodiment, the maximum length of the historical motion information list is N, where N is a positive integer;

[0264] The historical motion information list is initialized and updated by adding M motion information entries to the end of the historical motion information list, where M is a positive integer less than or equal to N.

[0265] In an exemplary embodiment, the motion information list is a candidate motion information list, which is used to provide candidate predicted displacement vectors.

[0266] In an exemplary embodiment, the list update module 930 is used to initialize and update the candidate motion information list using at least one motion information when the length of the candidate motion information list is less than a threshold value.

[0267] In an exemplary embodiment, the at least one motion information includes at least one of the following:

[0268] Motion information contained in the sequence header or image header;

[0269] At least one preset motion information;

[0270] Motion information derived from other historical motion information lists, which include historical motion information lists of codec units that use different prediction modes than the current codec unit;

[0271] Motion information of spatially adjacent units of the current encoding / decoding unit;

[0272] The motion information is determined based on the information recorded in the historical unit list, which contains information on at least one historical encoding / decoding unit.

[0273] In an exemplary embodiment, the preset motion information includes a displacement vector; the displacement vector includes at least one of the following:

[0274] (0,0), (-w,0), (-2*w,0), (0,-h), (0,-2*h), (-w,-h), (-w,-2*h), (-2*w,-h), (-2*w,-2*h);

[0275] Where w is the width of the current encoding / decoding unit and h is the height of the current encoding / decoding unit; or, w is the width of the smallest decoding unit and h is the height of the smallest decoding unit.

[0276] In an exemplary embodiment, when the candidate motion information list is used to provide the predicted displacement vector of the intra-block copy (IBC) prediction mode or the intra-string copy (ISC) prediction mode, the other historical motion information list includes the historical motion information list corresponding to the inter-frame prediction mode.

[0277] Alternatively, if the candidate motion information list is used to provide the predicted displacement vector of the inter-frame prediction mode, the other historical motion information list includes the historical motion information list corresponding to the IBC prediction mode or the ISC prediction mode.

[0278] In an exemplary embodiment, if the prediction mode of the current codec unit is IBC prediction mode or ISC prediction mode, then the spatial neighbor unit includes spatial neighbor units that adopt the IBC prediction mode or ISC prediction mode.

[0279] Alternatively, if the prediction mode of the current encoding / decoding unit is inter-frame prediction mode, then the spatial neighbor unit includes spatial neighbor units that adopt the inter-frame prediction mode.

[0280] In an exemplary embodiment, the list of historical units includes historical encoding and decoding units with coordinates (xi, yi);

[0281] If the prediction mode of the current codec unit is IBC prediction mode, and the top-left corner coordinate of the current codec unit is (x, y), then the motion information determined based on the information recorded in the historical unit list includes the displacement vector (xi-x, yi-y).

[0282] If the prediction mode of the current encoding / decoding unit is ISC prediction mode, and the coordinates of the first pixel of the current string in the current encoding / decoding unit are (x, y), then the motion information determined based on the information recorded in the historical unit list includes the displacement vector (xi-x, yi-y).

[0283] In an exemplary embodiment, the information recorded in the historical unit list includes at least one of the following:

[0284] Record information about historical codec units whose prediction mode is IBC prediction mode or ISC prediction mode;

[0285] If the prediction mode of the historical codec unit is IBC prediction mode or inter-frame prediction mode, record the top-left corner coordinates of at least one codec block contained in the historical codec unit.

[0286] If the prediction mode of the historical codec unit is ISC prediction mode, record the coordinates of at least one codec string contained in the historical codec unit.

[0287] In an exemplary embodiment, the list update module 930 is configured to:

[0288] The motion information to be added is compared with the existing motion information in the motion information list to check for duplicates;

[0289] The motion information list is initialized and updated based on the duplicate comparison results to obtain the initialized and updated motion information list.

[0290] In summary, the technical solution provided in this application updates the initial motion information list by filling it with additional motion information when the initial motion information list is insufficient. This provides more effective displacement vectors in the motion information list, resulting in better displacement vector prediction and improved video compression performance.

[0291] It should be noted that the apparatus provided in the above embodiments is only illustrated by the division of the above functional modules when implementing its functions. In actual applications, the above functions can be assigned to different functional modules as needed, that is, the internal structure of the device can be divided into different functional modules to complete all or part of the functions described above. In addition, the apparatus and method embodiments provided in the above embodiments belong to the same concept, and the specific implementation process can be found in the method embodiments, which will not be repeated here.

[0292] Please refer to Figure 10 This diagram illustrates a structural block diagram of a computer device provided in one embodiment of this application. The computer device can be either the encoding end device or the decoding end device described above. The computer device 150 may include: a processor 151, a memory 152, a communication interface 153, an encoder / decoder 154, and a bus 155.

[0293] The processor 151 includes one or more processing cores, and the processor 151 executes various functional applications and information processing by running software programs and modules.

[0294] The memory 152 can be used to store computer programs, and the processor 151 is used to execute the computer programs to implement the motion information list construction method in the video encoding and decoding described above.

[0295] Communication interface 153 can be used to communicate with other devices, such as receiving and receiving audio and video data.

[0296] The encoder / decoder 154 can be used to implement encoding and decoding functions, such as encoding and decoding audio and video data.

[0297] The memory 152 is connected to the processor 151 via the bus 155.

[0298] Furthermore, the memory 152 can be implemented by any type of volatile or non-volatile storage device or a combination thereof, including but not limited to: magnetic disks or optical disks, EEPROM (Electrically Erasable Programmable Read-Only Memory), EPROM (Erasable Programmable Read-Only Memory), SRAM (Static Random-Access Memory), ROM (Read-Only Memory), magnetic storage, flash memory, and PROM (Programmable Read-Only Memory).

[0299] Those skilled in the art will understand that Figure 10 The structure shown does not constitute a limitation on the computer device 150, and may include more or fewer components than shown, or combine certain components, or use different component arrangements.

[0300] In an exemplary embodiment, a computer-readable storage medium is also provided, which stores at least one instruction, at least one program, a code set, or an instruction set, wherein the at least one instruction, the at least one program, the code set, or the instruction set implements the motion information list construction method in the video encoding and decoding described above when executed by a processor.

[0301] In an exemplary embodiment, a computer program product or computer program is also provided, which includes computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computer device to perform the motion information list construction method in the video encoding / decoding described above.

[0302] It should be understood that "multiple" as used in this article refers to two or more. "And / or" describes the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can represent: A alone, A and B simultaneously, or B alone. The character " / " generally indicates that the preceding and following related objects have an "or" relationship.

[0303] The above description is merely an exemplary embodiment of this application and is not intended to limit this application. Any modifications, equivalent substitutions, improvements, etc., made within the spirit and principles of this application should be included within the protection scope of this application.

Claims

1. A method for constructing a motion information list in video encoding and decoding, characterized in that, The method includes: In the case of encoding or decoding each coding tree unit (CTU) row or each slice start in the image, an initial historical motion information list is obtained. The historical motion information list is used for at least one of the intra-block copy (IBC) prediction mode and intra-string copy (ISC) prediction mode. The historical motion information list is used to record historical motion information. Add the preset motion information to the historical motion information list to obtain the initialized and updated historical motion information list; When combining the historical motion information list with other motion information to derive a candidate motion information list, if the number of motion information included in the candidate motion information list is less than a threshold value, at least one motion information is added to the candidate motion information list to obtain the initialized and updated candidate motion information list. The candidate motion information list is used to provide candidate predicted displacement vectors. Wherein, the threshold value is less than the maximum length of the candidate motion information list, and the at least one motion information includes the preset motion information.

2. The method according to claim 1, characterized in that, The threshold value is 2.

3. The method according to claim 1, characterized in that, The sports information added to the historical sports information list also includes at least one of the following: The motion information contained in the historical motion information list after the target CTU encoding or decoding is completed; Motion information contained in the sequence header or image header.

4. The method according to claim 1, characterized in that, The preset motion information also includes at least one of the displacement vectors: (0,0)、(-w,0)、(-2 w,0)、(0,-h)、(0,-2 h)、(-w,-h)、(-w,-2 h)、(-2 w,-h)、(-2 w,-2 h); Where w is the width of the smallest decoding unit and h is the height of the smallest decoding unit.

5. The method according to claim 1, characterized in that, The preset motion information also includes location information; the location information includes at least one of the following: The coordinates of the left boundary pixel of the image, with the x-coordinate being 0 and the y-coordinate ranging from [0, pic_h-1]. The coordinates of the upper boundary pixel of the image, with the x-coordinate ranging from [0, pic_w-1] and the y-coordinate being 0; The coordinates of the left boundary pixel of the current CTU row, with the x-coordinate being 0 and the y-coordinate ranging from [y, y+ctu_h-1]. The coordinates of the upper boundary pixel of the current CTU row, with the x-coordinate ranging from [0, pic_w-1] and the y-coordinate; The coordinates of the left boundary pixel of the current CTU, with the x-coordinate being x and the y-coordinate ranging from [y, y+ctu_h-1]. The coordinates of the upper boundary pixel of the current CTU, with the x-coordinate ranging from [x, x+ctu_w-1] and the y-coordinate; Wherein, the top-left corner coordinates of the current CTU are (x, y), the width of the image is pic_w, the height of the image is pic_h, the width of the current CTU is ctu_w, and the height of the current CTU is ctu_h.

6. The method according to claim 1, characterized in that, The preset motion information also includes size information, the value of which is less than or equal to a first threshold.

7. The method according to claim 1, characterized in that, The preset motion information also includes the number of repetitions, where the value of the number of repetitions is less than or equal to a second threshold.

8. The method according to claim 1, characterized in that, The maximum length of the historical motion information list is N, where N is a positive integer; the step of adding preset motion information to the historical motion information list to obtain the initialized and updated historical motion information list includes: Add M preset motion information entries to the end of the historical motion information list, where M is a positive integer less than or equal to N.

9. The method according to any one of claims 1 to 8, characterized in that, The at least one motion information also includes at least one of the following: Motion information contained in the sequence header or image header; Motion information derived from other historical motion information lists, which include historical motion information lists of codec units that use different prediction modes than the current codec unit; Motion information of spatially adjacent units of the current encoding / decoding unit; The motion information is determined based on the information recorded in the historical unit list, which contains information on at least one historical encoding / decoding unit.

10. The method according to claim 9, characterized in that, The candidate motion information list is used to provide the predicted displacement vector for the IBC prediction mode or the ISC prediction mode, and the other historical motion information list includes the historical motion information list corresponding to the inter-frame prediction mode.

11. The method according to claim 9, characterized in that, The prediction mode of the current codec unit is either IBC prediction mode or ISC prediction mode, and the spatial neighbor unit includes spatial neighbor units that adopt the IBC prediction mode or ISC prediction mode.

12. The method according to claim 9, characterized in that, The list of historical units includes historical encoding and decoding units with coordinates (xi, yi); If the prediction mode of the current codec unit is IBC prediction mode, and the top-left corner coordinate of the current codec unit is (x, y), then the motion information determined based on the information recorded in the historical unit list includes the displacement vector (xi-x, yi-y). If the prediction mode of the current codec unit is ISC prediction mode, and the coordinates of the first pixel of the current string in the current codec unit are (x, y), then the motion information determined based on the information recorded in the historical unit list includes the displacement vector (xi-x, yi-y).

13. The method according to claim 9, characterized in that, The information recorded in the historical unit list includes at least one of the following: Record information about historical codec units whose prediction mode is IBC prediction mode or ISC prediction mode; If the prediction mode of the historical codec unit is IBC prediction mode or inter-frame prediction mode, record the top-left corner coordinates of at least one codec block contained in the historical codec unit. If the prediction mode of the historical codec unit is ISC prediction mode, record the coordinates of at least one codec string contained in the historical codec unit.

14. A motion information list construction device for video encoding and decoding, characterized in that, The device includes: The list acquisition module is used to acquire an initial historical motion information list when encoding or decoding each CTU row or each slice in an image. The historical motion information list is used for at least one of IBC prediction mode and ISC prediction mode, and the historical motion information list is used to record historical motion information. The list update module is used to add preset motion information to the historical motion information list to obtain the initialized and updated historical motion information list; The list update module is also used to add at least one piece of motion information to the candidate motion information list when the number of motion information included in the candidate motion information list is less than a threshold value, in order to obtain the initialized and updated candidate motion information list. The candidate motion information list is used to provide candidate predicted displacement vectors. Wherein, the threshold value is less than the maximum length of the candidate motion information list, and the at least one motion information includes the preset motion information.

15. A computer device, characterized in that, The computer device includes a processor and a memory, the memory storing at least one program, the at least one program being loaded and executed by the processor to implement the method as claimed in any one of claims 1 to 13.

16. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores at least one program, which is loaded and executed by a processor to implement the method as claimed in any one of claims 1 to 13.

17. A computer program product, characterized in that, The computer program product includes computer instructions stored in a computer-readable storage medium, which a processor reads from and executes to implement the method as described in any one of claims 1 to 13.

Citation Information

Patent Citations

  • Inter-frame prediction method and device, encoding / decoding method and device applied by inter-frame prediction device

    CN110868589A