Video coding method, video decoding method, and bit stream generation method

JP2025041966AActive Publication Date: 2025-03-26SZ DJI TECH CO LTD
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2024232861
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2019-01-03
Filing Date
2024-12-27
Publication Date
2025-03-26
Estimated Expiration
2039-12-31

Smart Images

  • Figure 2025041966000001_ABST
    Figure 2025041966000001_ABST
Patent Text Reader

Abstract

To provide a video coding method, a video decoding method, and a bit stream generation method and device capable of simplifying coding and decoding operations by limiting the number of reference frame lists that must be scanned in a bidirectional prediction process.SOLUTION: A video processing method that can be applied to a coding side and also to a decoding side includes determining a current block's temporal motion vector, determining motion information for the sub-blocks of the current block on the basis of the temporal motion vector, and performing inter-frame prediction for the current block on the basis of the motion information for the sub-blocks of the current block.SELECTED DRAWING: Figure 5
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] Copyright Statement The subject matter disclosed in this patent document contains material which is subject to copyright protection. Such copyright is owned by the Copyright Owner. The Copyright Owner has no objection to the copying by any person of this patent document or the patent disclosure as it appears in the official records and files of the Patent and Trademark Office.

[0002] The present application relates to the field of video encoding and decoding, and more particularly to a video encoding and decoding method and a bitstream generating method. [Background technology]

[0003] The video encoding process includes an inter-frame prediction process. The inter-frame prediction mode includes merge mode and non-merge mode. In the merge mode, a motion vector candidate list for the merge mode must be constructed first, and a motion vector for a current block must be selected from the motion vector candidate list for the merge mode. The current block may be called a current coding unit (CU).

[0004] As coding technology develops, alternative / advanced temporal motion vector prediction (ATMVP) technology has been introduced into inter-frame prediction. In ATMVP, a current block is divided into multiple sub-blocks and motion information of the sub-blocks is calculated. ATMVP aims to improve the overall coding performance of video by introducing motion vector prediction at the sub-block level.

[0005] The process of searching for the motion information of the sub-blocks of the current block using ATMVP technology is relatively complicated and there are some redundant operations, and there is still room for improvement in this process. Summary of the Invention [Means for solving the problem]

[0006] The present application provides a video encoding / decoding method and a bitstream generating method that can simplify the encoding / decoding operation.

[0007] In a first aspect, a video encoding method is provided, the method including: determining a first reference frame list and a second reference frame list for a current block; initially scanning the first reference frame list, and if a motion vector of a particular spatial neighboring block of the current block has the same reference frame in the first reference frame list as a co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as a temporal motion vector; if the reference frame of the motion vector of the particular spatial neighboring block in the first reference frame list is different from the co-located frame of the current frame, continuing to scan the second reference frame list, and if the reference frame of the motion vector of the particular spatial neighboring block in the second reference frame list is the same as the co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as the temporal motion vector; determining motion information of a sub-block of the current block based on the temporal motion vector; and performing inter-frame prediction of the current block based on the motion information of the sub-block of the current block.

[0008] In a second aspect, a video decoding method is provided, the method including: determining a first reference frame list and a second reference frame list for a current block; initially scanning the first reference frame list, and if a motion vector of a particular spatial neighboring block of the current block has the same reference frame in the first reference frame list as a co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as a temporal motion vector; if the reference frame of the motion vector of the particular spatial neighboring block in the first reference frame list is different from the co-located frame of the current frame, continuing to scan the second reference frame list, and if the reference frame of the motion vector of the particular spatial neighboring block in the second reference frame list is the same as the co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as the temporal motion vector; determining motion information of a sub-block of the current block based on the temporal motion vector; and performing decoding of the current block based on the motion information of the sub-block of the current block.

[0009] In a third aspect, a bitstream generation method is provided, the method including: determining a first reference frame list and a second reference frame list for a current block; initially scanning the first reference frame list, and if a motion vector of a particular spatial neighboring block of the current block has the same reference frame in the first reference frame list as a co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as a temporal motion vector; if the reference frame of the motion vector of the particular spatial neighboring block in the first reference frame list is different from the co-located frame of the current frame, continuing to scan the second reference frame list, and if the reference frame of the motion vector of the particular spatial neighboring block in the second reference frame list is the same as the co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as the temporal motion vector; determining motion information of a sub-block of the current block based on the temporal motion vector; and performing inter-frame prediction of the current block based on the motion information of the sub-block of the current block to obtain a bitstream.

[0010] In a fourth aspect, there is provided a video processing device comprising a memory for storing code and a processor for executing the code stored in the memory to perform the method of the first aspect, the second aspect or the third aspect.

[0011] In a fifth aspect, there is provided a computer readable storage medium having stored thereon instructions for carrying out the method of the first, second or third aspect.

[0012] In a sixth aspect, there is provided a computer program product comprising instructions for carrying out the method of the first, second or third aspect.

[0013] By limiting the number of reference frame lists that must be traversed in the bidirectional prediction process, the encoding / decoding operation can be simplified. [Brief description of the drawings]

[0014] [Figure 1] 13 is a flowchart illustrating the configuration of an affine merge candidate list. [Diagram 2] FIG. 2 is a schematic diagram of neighboring blocks of a current block. [Diagram 3] 1 is a flowchart of the ATMVP realization process. [Figure 4] FIG. 13 is a diagram illustrating an example of a method for obtaining motion information of a sub-block of a current block. [Diagram 5] FIG. 2 is a schematic diagram of the flow of a video processing method provided by an embodiment of the present application; [Figure 6] FIG. 2 is a structural schematic diagram of a video processing device provided by an embodiment of the present application; DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0015] This application can be applied to multiple video coding standards, including H.264, high efficiency video coding (HEVC), versatile video coding (VVC), audio video coding standard (AVS), AVS+, AVS2, and AVS3.

[0016] The video coding process mainly includes prediction, transformation, quantization, entropy coding, loop filtering and other parts. Prediction is an important part of mainstream video coding technology. Prediction can be divided into intra-frame prediction and inter-frame prediction. Inter-frame prediction can be realized by the method of motion compensation. The motion compensation process will be described below with an example.

[0017] For example, an image of one frame can be first divided into one or more coding regions. The coding regions can also be called coding tree units (CTUs). The size of a CTU can be, for example, 64×64 or 128×128 (unit: pixels. In the following similar descriptions, the unit will be omitted). Each CTU can be divided into square or rectangular image blocks. The image blocks can also be called coding units (CUs), and the current CU to be coded is hereinafter called the current block.

[0018] When performing inter-frame prediction on a current block, a similar block of the current block can be found in a reference frame (which may be a reconstructed frame in the time domain or nearby) as a prediction block of the current block. The relative displacement between the current block and the similar block is called a motion vector (MV). The process of finding a similar block in a reference frame as a prediction block of the current block is called motion compensation.

[0019] Inter-frame prediction modes include merge mode and non-merge mode. In merge mode, the motion vector (MV) of an image block is the motion vector prediction (MVP) of the image block. Therefore, for merge mode, it is only necessary to transmit the index of MVP and the index of the reference frame in the code stream. Meanwhile, non-merge mode not only needs to transmit the MVP and the index of the reference frame in the code stream, but also needs to transmit the motion vector difference (MVD) in the code stream.

[0020] Traditional motion vectors adopt a simple translation model, that is, the motion vector of a current block represents the relative displacement between the current block and a reference block. This type of motion vector has difficulty in accurately describing more complex motion situations in a video, such as scaling, rotation, perspective, etc. In order to describe more complex motion situations, the affine model has been introduced into related coding and decoding standards. The affine model uses the motion vectors of two or three control points (CP) of the current block to describe the affine motion field of the current block. The two control points may be, for example, the top left corner and the top right corner of the current block, and the three control points may be, for example, the top left corner, the top right corner, and the bottom left corner of the current block.

[0021] The affine model is combined with the merge mode mentioned above to form the affine merge mode. Normally, the merge mode's motion vector candidate list records the MVP of the image block, while the affine merge mode's motion vector candidate list records the control point motion vector prediction (CPMVP). Similar to the normal merge mode, the affine merge mode does not need to add the MVD to the code stream, and the CPMVP is simply used as the CPMV of the current block.

[0022] The construction of the affine merge candidate list for the current block is one of the key processes in the affine merge mode. Figure 1 shows one possible construction scheme of the affine merge candidate list.

[0023] In step S110, the ATMVP is inserted into the affine merge candidate list of the current block.

[0024] The motion information of the sub-blocks of the current block is included in the ATMVP. In other words, when the ATMVP technique is adopted, an affine merge candidate list is inserted into the motion information of the sub-blocks of the current block, so that the affine merge mode can perform motion compensation at the sub-block level, thereby improving the overall coding performance of the video. The embodiment of step S110 will be described in detail later with reference to FIG. 3, but will not be described in detail here for the time being.

[0025] The motion information includes one or a combination of multiple pieces of information including a motion vector, a motion vector differential, a reference frame index value, a reference direction for inter-frame prediction, information on whether intra-frame coding or inter-frame coding is adopted for the image block, and a partition mode for the image block.

[0026] In step S120, the succeeding affine candidates are inserted into the affine merge candidate list.

[0027] For example, as shown in FIG. 2, the neighboring blocks of the current block are scanned in the order of A1→B1→B0→A0→B2, and the CPMVs of the neighboring blocks in the affine merge mode are adopted as affine candidates of the current block and inserted into the affine merge candidate list of the current block.

[0028] In step S130, it is determined whether the number of affine candidates in the affine merge candidate list is smaller than a predetermined value.

[0029] If the number of affine candidates in the affine merge candidate list has reached a predetermined value, the flow in FIG. 1 is terminated, and if the number of affine candidates in the affine merge candidate list is smaller than the predetermined value, step S140 is continued.

[0030] In step S140, the affine candidates to be configured are inserted into the affine merge candidate list.

[0031] For example, by combining motion information of neighboring blocks of the current block, new affine candidates can be constructed, and the constructed and generated affine candidates can be inserted into the affine merge candidate list.

[0032] In step S150, it is determined whether the number of affine candidates in the affine merge candidate list is smaller than a predetermined value.

[0033] If the number of affine candidates in the affine merge candidate list has reached a predetermined value, the flow in FIG. 1 is terminated, and if the number of affine candidates in the affine merge candidate list is smaller than the predetermined value, step S160 is continued.

[0034] In step S160, a 0 vector is inserted into the affine merge candidate list.

[0035] In other words, the affine merge candidate list is padded with zero vectors to reach a predetermined value.

[0036] Hereinafter, the embodiment of step S110 in FIG. 1 will be described in detail with reference to FIG. 3. In some examples, the method of inserting ATMVP into the affine merge candidate list of the current block described below may not be limited to the embodiment shown in FIG. 1 above.

[0037] As shown in FIG. 3, the embodiment of the ATVMP technology, ie, the manner of obtaining motion information of sub-blocks of a current block, can be roughly divided into two steps: steps S310 and S320.

[0038] In step S310, a corresponding block in a reference frame of the current block is determined.

[0039] In the current ATMVP technology, a frame for obtaining motion information of a current frame (a frame in which a current block is located) is called a co-located frame. The co-located frame of the current frame is set at the initialization of a slice. Taking forward prediction as an example, the first reference frame list may be a forward reference frame list, or may be a reference frame list including a first set of reference frames. The first set of reference frames includes reference frames whose temporal order is before and after the current frame. At the initialization of a slice, the first frame in the first reference frame list of the current block is usually set as the co-located frame of the current frame.

[0040] The corresponding block of the current block in the reference frame is determined by one temporal motion vector (temp MV). Therefore, in order to obtain the corresponding block of the current block in the reference frame, this temporal motion vector must be derived first. Next, the derivation process of the temporal motion vector is described by taking forward prediction and bidirectional prediction as examples respectively.

[0041] For forward prediction, the number of the reference frame list (which can also be called a reference list or a reference image list) of the current block is 1. The reference frame list of the current block can be called the first reference frame list (reference list 0). In one scenario, this first reference frame list may be a forward reference frame list. The co-located frame of the current frame is usually set to the first frame in the first reference frame list.

[0042] In the process of deriving a temporal motion vector, one embodiment is as follows: first, scan the motion vector candidate list of the current block (this motion vector candidate list can be constructed based on the motion vectors of image blocks at four adjacent positions in the spatial domain), and take the first candidate motion vector in this motion vector candidate list as the initial temporal motion vector; then, scan the first reference frame list of the current block, and if the reference frame of this first candidate motion vector is the same as the co-located frame of the current frame, this first candidate motion vector can be taken as the temporal motion vector; if the reference frame of this first candidate motion vector is different from the co-located frame of the current frame, the temporal motion vector can be set as a 0 vector and stop scanning.

[0043] In this embodiment, a motion vector candidate list must be constructed to obtain the first candidate motion vector in the list. In another embodiment, the motion vector of one spatial neighboring block of the current block can be directly taken as the initial temporal motion vector. If the reference frame of the motion vector of this spatial neighboring block is the same as the co-located frame of the current frame, it can be taken as the temporal motion vector; otherwise, the temporal motion vector can be set as a 0 vector and the scanning can be stopped. Here, the spatial neighboring block can be any one of the coded blocks around the current block. For example, it can be fixed to the left block of the current block, or fixed to the block above the current block, or fixed to the upper left block of the current block.

[0044] For bidirectional prediction, the number of reference frame lists of the current block is two, that is, including a first reference frame list (reference list 0) and a second reference frame list (reference list 1), where, in one scene, the first reference frame list may be a forward reference frame list and the second reference frame list may be a backward reference frame list.

[0045] In the process of deriving a temporal motion vector, one embodiment is as follows: first, scan the current motion vector candidate list, and take the first candidate motion vector in the motion vector candidate list as the initial temporal motion vector. Then, first scan one reference frame list (can be the first reference frame list or the second reference frame list) of the current block in the current reference direction, and if the reference frame of the first candidate motion vector is the same as the co-located frame of the current frame, the first candidate motion vector can be taken as the temporal motion vector; if the reference frame of the first candidate motion vector is different from the co-located frame of the current frame, continue to scan the reference frame list of the current block in another reference direction. Similarly, if the reference frame of the first candidate motion vector in the other reference frame list is the same as the co-located frame of the current frame, the first candidate motion vector can be taken as the temporal motion vector; if the reference frame of the first candidate motion vector is different from the co-located frame of the current frame, the temporal motion vector can be set as the 0 vector and stop scanning. In addition, in some other situations, both the first reference frame list and the second reference frame list may include reference frames that are temporally before and after the current frame, and the bidirectional prediction refers to selecting reference frames with different reference directions from the first reference frame list and the second reference frame list.

[0046] In this embodiment, it is still necessary to construct a motion vector candidate list to derive the temp MV of ATMVP in bidirectional prediction. In another embodiment, the motion vector of one spatial neighboring block of the current block can be taken directly as the initial temporal motion vector. For bidirectional prediction, first scan one reference frame list (can be the first reference frame list or the second reference frame list) of the current block in the current reference direction, and if the reference frame of the motion vector of this spatial neighboring block in this reference direction is the same as the co-located frame of the current frame, it can be taken as the temporal motion vector. Optionally, if the reference frame of the motion vector of this spatial neighboring block in this reference direction is different from the co-located frame of the current frame, continue to scan the reference frame list of the current block in another reference direction. Similarly, if the reference frame in the other reference frame list of the motion vector of the spatial neighboring block is the same as the co-located frame of the current frame, the motion vector of the spatial neighboring block can be a temporal motion vector, and if the reference frame of the motion vector of the spatial neighboring block is different from the co-located frame of the current frame, the temporal motion vector can be set to a 0 vector and scanning can be stopped. Here, the spatial neighboring block can be any one of the coded blocks around the current block. For example, it can be fixed to the left block of the current block, or fixed to the block above the current block, or fixed to the upper left block of the current block.

[0047] For bidirectional prediction, the scanning order of the first reference frame list and the second reference frame list may be determined by the following rules.

[0048] If the current frame is in a low delay encoding mode and the colocated frame of the current frame is set to the first frame in the second reference frame list, the second reference frame list is scanned first; otherwise, the first reference frame list is scanned first.

[0049] Here, if a low delay encoding mode is adopted for the current frame, it can be represented that the reference frames of the current frame are all played before the current frame in the video sequence, and if the co-located frame of the current frame is set to the first frame in the second reference frame list, it can be represented that the quantization step size of the first slice in the first reference frame list of the current frame is smaller than the quantization step size of the first slice in the second reference frame list.

[0050] After the temporal motion vector is derived, the corresponding block of the current block can be found in the reference frame using the temporal motion vector.

[0051] In step S320, obtain the motion information of the sub-blocks of the current block according to the corresponding blocks of the current block.

[0052] As shown in Figure 4, the current block can be divided into a number of sub-blocks, and then the motion information of the sub-blocks in the corresponding blocks can be determined. It is worth noting that for each sub-block, the motion information of the corresponding block can be determined according to the minimum motion information storage unit in which it is located.

[0053] The motion information includes one or a combination of multiple pieces of information including a motion vector, a motion vector differential, a reference frame index value, a reference direction for inter-frame prediction, information on whether intra-frame coding or inter-frame coding is adopted for the image block, and a partition mode for the image block.

[0054] From the realization process of ATMVP depicted in Figure 3, it can be seen that for bidirectional prediction, the worst case scenario is that in the process of deriving a temporal motion vector, even if both of the two reference frame lists are scanned, a temporal motion vector that meets the conditions is still not derived, and in such a situation, scanning the two reference frame lists is redundant.

[0055] In addition, in bidirectional prediction, if the encoding mode of the current frame is low delay mode (low delay B) or random access mode (random access), there may be a certain amount of overlap in the reference frames in the first reference frame list and the second reference frame list, so in the process of obtaining a temporal motion vector, there may be redundant operations in the scanning process for the two reference frame lists.

[0056] Therefore, the temporal motion vector derivation schemes provided by the related art for bi-prediction are relatively complex and leave room for improvement.

[0057] Next, an embodiment of the present invention will be described in detail with reference to FIG.

[0058] 5 is a schematic flow chart of a video processing method provided by an embodiment of the present application. The method of FIG. 5 can be applied to both the encoding side and the decoding side.

[0059] In step S510, obtain the reference frame lists of the current block, including a first reference frame list and a second reference frame list.

[0060] The current block may also be referred to as a current CU. The reference frame list of the current block includes a first reference frame list and a second reference frame list, which indicates that the current block is going to perform inter-frame bidirectional prediction.

[0061] Optionally, the first reference frame list may be a forward reference frame list and may be a reference frame list including a first set of reference frames, the first set of reference frames including reference frames that are temporally before and after the current frame.

[0062] Optionally, the second reference frame list may be a backward reference frame list, which may be a reference frame list including a second set of reference frames, the second set of reference frames including reference frames that are temporally before and after the current frame.

[0063] It is important to note that in some scenarios, both the first reference frame list and the second reference frame list may include reference frames that are temporally before and after the current frame, and the bidirectional prediction may refer to selecting reference frames with different reference directions from the first reference frame list and the second reference frame list.

[0064] In step S520, a target reference frame list is determined based on the reference frame list of the current block.

[0065] The target reference frame list is one of the first reference frame list and the second reference frame list. The target reference frame list may be selected randomly or based on a certain rule. For example, the target reference frame list may be selected based on at least one of the following rules: if the current frame in which the current block is located adopts a low delay encoding mode and the co-located frame of the current frame is the first frame in the second reference frame list, the second reference frame list is determined as the target reference frame list; if the current frame in which the current block is located does not adopt a low delay encoding mode or the co-located frame of the current frame is not the first frame in the second reference frame list, the first reference frame list is determined as the target reference frame list.

[0066] In step S530, a temporal motion vector of the current block is determined based on the target reference frame list of the current block.

[0067] In bidirectional prediction process, the embodiment of the present application determines the temporal motion vector of the current block based on one of the first and second reference frame lists.In other words, regardless of whether the temporal motion vector can be derived from the target reference frame list, after finishing scanning the target reference frame list, scanning stops immediately.In other words, the temporal motion vector of the current block can be determined based only on the target reference frame list.

[0068] Take an example, firstly, a first candidate motion vector can be selected from a current motion vector candidate list (this motion vector candidate list can be constructed according to the motion vectors of image blocks at four adjacent positions in the spatial domain), search for a reference frame of the first candidate motion vector from a target reference frame list, and if the reference frame of the first candidate motion vector and the co-located frame of the current block are the same, the first candidate motion vector can be determined as a temporal motion vector, and if the reference frame of the first candidate motion vector and the co-located frame of the current block are different, the scanning is also stopped, and the other reference frame list of the current block is not scanned continuously as illustrated in the embodiment of Fig. 3. In this situation, the 0 vector can be the temporal motion vector of the current block.

[0069] In step S540, the motion information of the sub-blocks of the current block is determined based on the temporal motion vector.

[0070] For example, a corresponding block in a reference frame of the current block may be determined based on a temporal motion vector. Then, motion information of a sub-block of the current block may be determined based on a corresponding block in a reference frame of the current block. The motion information includes one or more combinations of information including a motion vector, a motion vector difference, a reference frame index value, a reference direction of inter-frame prediction, information on whether intra-frame coding or inter-frame coding is adopted for the image block, and a partition mode of the image block. Step S540 may be implemented with reference to step S320 above, and will not be described again in detail here.

[0071] In step S550, inter-frame prediction is performed on the current block based on the motion information of the sub-blocks of the current block.

[0072] For example, step S550 may include performing inter-frame prediction based on motion information of the sub-blocks of the current block in units of the sub-blocks of the current block.

[0073] For example, as shown in Fig. 1, motion information of a sub-block of a current block is inserted into the affine merge candidates list of the current block as ATMVP, and then a complete affine merge candidates list can be constructed as in steps S120 to S160 in Fig. 1. Then, the best candidate motion vector can be determined by performing inter-frame prediction on the current block using the candidate motion vectors in the affine merge candidates list. A detailed embodiment of step S550 can be performed with reference to the related art, and the embodiments of the present application are not limited thereto.

[0074] The embodiments of the present application can simplify the operations on the encoding and decoding side by limiting the number of reference frame lists that must be scanned in the bidirectional prediction process.

[0075] It can be understood that when the method of Fig. 5 is applied to the encoding side and the decoding side respectively, there may be differences in the inter-frame prediction process for the current block described in step S550. For example, when the method of Fig. 5 is applied to the encoding side, performing inter-frame prediction for the current block may include: determining a prediction block of the current block, and calculating a residual block of the current block according to an initial block and a prediction block of the current block. Also, when the method of Fig. 5 is applied to the decoding side, performing inter-frame prediction for the current block may include: determining a prediction block and a residual block of the current block, and calculating a reconstruction block of the current block according to a prediction block and a residual block of the current block.

[0076] Above, the method embodiment of the present application has been described in detail with reference to Figures 1 to 5. Hereinafter, the device embodiment of the present application will be described in detail with reference to Figure 6. The description of the method embodiment and the description of the device embodiment correspond to each other, and therefore, it should be understood that the previous method embodiment can be referenced for the parts not described in detail.

[0077] 6 is a schematic structural diagram of a video processing device provided by an embodiment of the present application. The device 60 in FIG.

[0078] The memory 62 can be used to store the code.

[0079] The processor 64 can be used to execute the code stored in the memory to perform the following operations: obtain a reference frame list for a current block including a first reference frame list and a second reference frame list; determine a target reference frame list, which is one of the first reference frame list and the second reference frame list, based on the reference frame list of the current block; determine a temporal motion vector for the current block based on the target reference frame list of the current block; determine motion information of a sub-block of the current block based on the temporal motion vector; and perform inter-frame prediction for the current block based on the motion information of the sub-block of the current block.

[0080] Optionally, determining motion information of a sub-block of the current block based on the temporal motion vector includes determining a corresponding block of the current block in a reference frame based on the temporal motion vector, and determining motion information of a sub-block of the current block based on the corresponding block of the current block in the reference frame.

[0081] Optionally, determining a target reference frame list based on the reference frame list of the current block includes at least one of: determining the second reference frame list as the target reference frame list when a low delay encoding mode is adopted for the current frame in which the current block is located and a co-located frame of the current frame is the first frame in the second reference frame list; and determining the first reference frame list as the target reference frame list when a low delay encoding mode is not adopted for the current frame in which the current block is located or a co-located frame of the current frame is not the first frame in the second reference frame list.

[0082] Optionally, the first reference frame list may be a forward reference frame list and may be a reference frame list including a first set of reference frames, the first set of reference frames including reference frames that are temporally before and after the current frame.

[0083] Optionally, the second reference frame list may be a backward reference frame list, which may be a reference frame list including a second set of reference frames, the second set of reference frames including reference frames that are temporally before and after the current frame.

[0084] It is important to note that in some scenarios, both the first reference frame list and the second reference frame list may include reference frames that are temporally before and after the current frame, and the bidirectional prediction may refer to selecting reference frames with different reference directions from the first reference frame list and the second reference frame list.

[0085] Optionally, determining a temporal motion vector of the current block based on the target reference frame list of the current block includes: selecting a first candidate motion vector from the current motion vector candidate list; searching for a reference frame of the first candidate motion vector from the target reference frame list; and determining the first candidate motion vector as the temporal motion vector if the reference frame of the first candidate motion vector is the same as the co-located frame of the current block.

[0086] Optionally, determining a temporal motion vector for the current block based on a target reference frame list for the current block further includes determining the temporal motion vector to be a zero vector if a reference frame of the first candidate motion vector and a co-located frame of the current block are different.

[0087] Optionally, performing inter-frame prediction on the current block includes determining a predictive block of the current block, and calculating a residual block of the current block based on the initial block of the current block and the predictive block.

[0088] Optionally, performing inter-frame prediction on the current block includes determining a predicted block and a residual block of the current block, and calculating a reconstructed block of the current block based on the predicted block and the residual block of the current block.

[0089] Optionally, performing inter-frame prediction on the current block based on motion information of sub-blocks of the current block may include performing inter-frame prediction on a sub-block basis based on motion information of the sub-blocks of the current block.

[0090] In the above embodiments, the present invention may be realized in whole or in part by software, hardware, firmware, or any other combination. When realized using software, the present invention may be realized in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded into a computer and executed, the flow or function described in the embodiments of the present invention is generated in whole or in part. The computer may be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions may be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer instructions may be transmitted from one website, computer, server, or data center to another website, computer, server, or data center by wire (e.g., coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (e.g., infrared, radio, microwave, etc.) methods. The computer-readable storage medium may be any available medium accessible by a computer, or may be a data storage device such as a server, data center, etc. that includes one or more available media. The usable medium may be a magnetic medium (e.g., a floppy disk, a hard disk, a magnetic tape), an optical medium (e.g., a digital video disc (DVD)), or a semiconductor medium (e.g., a solid state disk (SSD)).

[0091] Those skilled in the art can imagine that the units and algorithm steps of each example described in the embodiments disclosed herein can be combined and realized by electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are ultimately implemented by hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to realize the described functions for each specific application, but such realization should not be considered as departing from the scope of the present application.

[0092] In some embodiments provided by the present application, it should be understood that the disclosed system, device and method can be realized in other ways. For example, the above-mentioned device embodiments are only schematic, for example, the division of the units is only a logical functional division, and in actual implementation, there may be other division ways, for example, multiple units or assemblies may be combined or integrated into another system. Or, some features may be ignored or not implemented. In other respects, the couplings or direct couplings or communication connections between the shown or discussed may be indirect couplings or communication connections through some interfaces, devices or units, which may be electrical, mechanical or other forms.

[0093] The above units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, i.e., located in one place or distributed over multiple network units. According to actual needs, some or all of the units can be selected to achieve the purpose of the solution of the embodiment.

[0094] Furthermore, each functional unit in each embodiment of the present application may be integrated into a single processing unit, and each unit may physically exist alone, or two or more units may be integrated into a single unit.

[0095] The above is merely a specific embodiment of the present application, and the scope of protection of the present application is not limited thereto. Any person skilled in the art can easily think of modifications or replacements within the scope of the technology disclosed in the present application, and all of them must be included in the scope of protection of the present application. Therefore, the scope of protection of the present application must conform to the scope of protection of the claims.

Claims

1. 1. A video encoding method, comprising: determining a first reference frame list and a second reference frame list for a current block; first scanning the first reference frame list, and if a motion vector of a particular spatial neighboring block of the current block has the same reference frame in the first reference frame list as a co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as a temporal motion vector; if the reference frame of the motion vector of the particular spatial neighboring block in the first reference frame list is different from the co-located frame of the current frame, continue scanning the second reference frame list, and if the reference frame of the motion vector of the particular spatial neighboring block in the second reference frame list is the same as the co-located frame of the current frame, use the motion vector of the particular spatial neighboring block as the temporal motion vector; determining motion information of a sub-block of the current block based on the temporal motion vector; performing inter-frame prediction of the current block based on the motion information of the sub-blocks of the current block. Video encoding methods.

2. the particular spatial neighboring block is a left spatial neighboring block; The video encoding method of claim 1.

3. Determining a first reference frame list and a second reference frame list for a current block includes, in a case of bi-prediction, determining the first reference frame list and the second reference frame list for a current block; The video encoding method of claim 1.

4. outputting the code stream; the codestream conveys information obtained by performing inter-frame prediction on the current block. The video encoding method of claim 1.

5. 1. A video decoding method, comprising: determining a first reference frame list and a second reference frame list for a current block; first scanning the first reference frame list, and if a motion vector of a particular spatial neighboring block of the current block has the same reference frame in the first reference frame list as a co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as a temporal motion vector; if the reference frame of the motion vector of the particular spatial neighboring block in the first reference frame list is different from the co-located frame of the current frame, continue scanning the second reference frame list, and if the reference frame of the motion vector of the particular spatial neighboring block in the second reference frame list is the same as the co-located frame of the current frame, use the motion vector of the particular spatial neighboring block as the temporal motion vector; determining motion information of a sub-block of the current block based on the temporal motion vector; performing decoding of the current block based on the motion information of the sub-blocks of the current block. Video decoding methods.

6. the particular spatial neighboring block is a left spatial neighboring block; The video decoding method of claim 5.

7. Determining a first reference frame list and a second reference frame list for a current block includes, in a case of bi-prediction, determining the first reference frame list and the second reference frame list for a current block; The video decoding method of claim 5.

8. obtaining a code stream; the codestream conveys information obtained by performing inter-frame prediction on the current block. The video decoding method of claim 5.

9. 1. A method for generating a bitstream, comprising: determining a first reference frame list and a second reference frame list for a current block; first scanning the first reference frame list, and if a motion vector of a particular spatial neighboring block of the current block has the same reference frame in the first reference frame list as a co-located frame of the current frame, using the motion vector of the particular spatial neighboring block as a temporal motion vector; if the reference frame of the motion vector of the particular spatial neighboring block in the first reference frame list is different from the co-located frame of the current frame, continue scanning the second reference frame list, and if the reference frame of the motion vector of the particular spatial neighboring block in the second reference frame list is the same as the co-located frame of the current frame, use the motion vector of the particular spatial neighboring block as the temporal motion vector; determining motion information of a sub-block of the current block based on the temporal motion vector; performing inter-frame prediction of the current block based on the motion information of the sub-blocks of the current block to obtain a bitstream. Bitstream generation method.

10. the particular spatial neighboring block is a left spatial neighboring block; The bitstream generating method according to claim 9.

Citation Information

Patent Citations

  • Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3d-hevc

    US20150085929A1

  • Sub-prediction unit based advanced temporal motion vector prediction

    US20160219278A1

  • Motion vector prediction

    WO2018231700A1

  • Method and device for obtaining motion vector of video image

    WO2019192152A1

  • Image processing method based on inter prediction mode, and device therefor

    WO2019194514A1