CN111670578B - Video coding or decoding method, device, equipment and storage medium - Google Patents

Video coding or decoding method, device, equipment and storage medium Download PDF

Info

Publication number
CN111670578B
CN111670578B CN201980004958.9A CN201980004958A CN111670578B CN 111670578 B CN111670578 B CN 111670578B CN 201980004958 A CN201980004958 A CN 201980004958A CN 111670578 B CN111670578 B CN 111670578B
Authority
CN
China
Prior art keywords
motion vector
image block
current image
converting
precision
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201980004958.9A
Other languages
Chinese (zh)
Other versions
CN111670578A (en
Inventor
孟学苇
郑萧桢
王苫社
马思伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peking University
SZ DJI Technology Co Ltd
Original Assignee
Peking University
SZ DJI Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peking University, SZ DJI Technology Co Ltd filed Critical Peking University
Publication of CN111670578A publication Critical patent/CN111670578A/en
Application granted granted Critical
Publication of CN111670578B publication Critical patent/CN111670578B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

The embodiment of the specification provides a video coding or decoding method, a device, equipment and a storage medium, wherein the method comprises the following steps: acquiring a first candidate motion information list of a current image block, wherein the first candidate motion information list contains predicted motion information, and the predicted motion information comprises a motion vector value; converting the precision of the motion vector values. By using the motion vector value of the adjustment precision to carry out video coding or decoding, the bandwidth utilization rate can be improved, the coding or decoding operation is simplified, and the coding or decoding efficiency is improved.

Description

Video coding or decoding method, device, equipment and storage medium
Technical Field
The present disclosure relates to the field of video encoding and decoding, and in particular, to a method, an apparatus, a device, and a storage medium for video encoding or decoding.
Background
Currently, for inter prediction part on general Video Coding (VVC), a motion vector candidate list of a current CU is usually constructed according to motion vectors of coded neighboring blocks of the current Coding Unit (CU). When a Motion Vector candidate list is currently obtained in a triangle prediction mode, in order to prevent bandwidth pressure from being brought by triangle prediction, a current CU is split into two prediction units PU, and all bi-prediction Motion Vectors (MVs) in the Motion Vector candidate list in each PU are split into one direction. The reason why the current PU of triangle prediction only performs unidirectional prediction is that, although both PUs are triangles in triangle prediction and the area of the two PUs only occupies half of the CU, in a specific implementation, when data is read in the motion compensation process, information of the entire CU to which the MVs of the respective PUs point still needs to be read. Therefore, if both PUs of the triangle prediction are bi-predicted MVs, then at the time of motion compensation, the CU of one triangle prediction needs to take the information of 4 CUs (each PU takes out the CU pointed by two MVs), which doubles the bandwidth consumption compared to the CU of the normal bi-prediction mode (which only needs to take out the information of two CUs).
In addition, the motion vector candidate list currently obtained in the triangle prediction mode needs to be recombined, and the candidate list construction process is complex. In the current triangle Prediction mode, no MV introduced by technologies such as HMVP (History-based Motion Vector Prediction, motion Vector Prediction based on History information), MMVD (memory with MVD), and pageaverage in the general target mode is added, which may adversely affect performance. Therefore, how to better improve the performance of video coding and decoding becomes a focus of research.
Disclosure of Invention
Embodiments of the present specification provide a video encoding or decoding method, apparatus, device, and storage medium, which improve bandwidth utilization, and hardware friendliness, simplify encoding or decoding operations, and improve encoding or decoding efficiency.
In a first aspect, an embodiment of the present specification provides a video encoding or decoding method, including:
acquiring a first candidate motion information list of a current image block, wherein the first candidate motion information list contains predicted motion information, and the predicted motion information comprises a motion vector value;
converting the precision of the motion vector values.
In a second aspect, an embodiment of the present specification provides a video encoding and decoding apparatus, including:
an obtaining module, configured to obtain a first candidate motion information list of a current image block, where the first candidate motion information list includes predicted motion information, and the predicted motion information includes a motion vector value;
and the conversion module is used for converting the precision of the motion vector value.
In a third aspect, an embodiment of the present specification provides a video encoding and decoding apparatus, including: a memory and a processor;
the memory to store program instructions;
the processor, configured to invoke the program instructions, and when executed, configured to perform the following:
acquiring a first candidate motion information list of a current image block, wherein the first candidate motion information list contains predicted motion information, and the predicted motion information comprises a motion vector value;
converting the precision of the motion vector values.
In a fourth aspect, the present specification provides a computer-readable storage medium, which stores a computer program, and when the computer program is executed by a processor, the computer program implements the video encoding or decoding method according to the first aspect.
In an embodiment of the present specification, by obtaining a first candidate motion information list of a current image block, where the first candidate motion information list includes a motion vector value, a video encoding and decoding device may convert precision of the motion vector value to implement video encoding or decoding according to the motion vector value after precision adjustment in the first candidate motion information list, so as to improve a bandwidth utilization rate, simplify an encoding or decoding operation, and improve encoding or decoding efficiency.
Drawings
In order to more clearly illustrate the embodiments of the present specification or the technical solutions in the prior art, the drawings required to be used in the embodiments will be briefly described below, it is obvious that the drawings in the following description are only some embodiments of the present specification, and it is obvious for those skilled in the art to obtain other drawings without creative efforts.
Fig. 1 is a schematic diagram of a motion vector candidate block in a Merge mode according to an embodiment of the present disclosure;
fig. 2 is a schematic diagram of a partition prediction unit of a triangle prediction mode according to an embodiment of the present disclosure;
fig. 3 is a flowchart illustrating a video encoding or decoding method provided in an embodiment of the present disclosure;
fig. 4 is a schematic flow chart of another video encoding or decoding method provided by an embodiment of the present specification;
fig. 5 is a flowchart of another video encoding or decoding method provided by an embodiment of the present specification;
fig. 6 is a flowchart of another video encoding or decoding method provided by an embodiment of the present specification;
fig. 7 is a flowchart illustrating a further video encoding or decoding method provided by an embodiment of the present specification;
fig. 8 is a schematic structural diagram of a video encoding and decoding apparatus provided in an embodiment of the present disclosure;
fig. 9 is a schematic structural diagram of a video encoding and decoding device provided in an embodiment of the present specification;
FIG. 10 is a schematic diagram of pixel interpolation provided in an embodiment of the present description;
FIG. 11a is a diagram of a processing coding unit for triangle prediction;
FIG. 11b is a diagram of an alternative triangle prediction processing coding unit;
fig. 12 is a schematic diagram of the MV scaling technique provided in the embodiments of the present disclosure.
Detailed Description
The technical solutions in the embodiments of the present specification will be clearly and completely described below with reference to the drawings in the embodiments of the present specification, and it is obvious that the described embodiments are only a part of the embodiments of the present specification, and not all of the embodiments. All other embodiments obtained by a person skilled in the art based on the embodiments in the present specification without any inventive step are within the scope of the present specification.
Some embodiments of the present description will be described in detail below with reference to the accompanying drawings. The embodiments described below and the features of the embodiments can be combined with each other without conflict.
In video coding and decoding, an inter-frame prediction technique uses temporal correlation between adjacent frames of a video, uses a previously encoded reconstructed frame as a reference frame, and predicts a current frame (a frame currently being encoded) by a motion estimation and motion compensation method, thereby removing temporal redundant information of the video.
The inter-frame prediction technology mainly comprises forward prediction, backward prediction, bi-prediction and the like. Forward prediction is the prediction of a current frame using a temporally previous reconstructed frame ("historical frame"). Backward prediction is the prediction of a current frame using frames following the current frame ("future frames"). Bi-prediction is the prediction of a current frame using not only "historical frames" but also "future frames". In particular, bi-prediction may include prediction with two forward frames ("forward prediction"), prediction with two backward frames ("backward prediction"), and prediction with both forward and backward frames ("forward and backward prediction"). The forward prediction means that if the best matching block of the image block a is the image block B, and the frame where the image block B is located is a historical frame of the frame where the image block a is located, the MV of the image block B relative to the image block a is the MV of the image block a, that is, the forward MV of the image block a. The backward prediction means that if the best matching block of the image block a is the image block B, and the frame where the image block B is located is a future frame of the frame where the image block a is located, the MV of the image block B relative to the image block a is the MV of the image block a, that is, the backward MV of the image block a. The bi-prediction means that the first best matching block of the image block a is the image block B1, the frame where the image block B1 is located is a historical frame of the frame where the image block a is located, and if the second best matching block of the image block a is the image block B2, the frame where the image block B2 is located is a future frame of the frame where the image block a is located: when MV1 of the image block B1 is obtained relative to the image block a and MV2 of B2 is obtained relative to the image block a, MV1 and MV2 constitute a bidirectional MV group. MV1 is the forward MV of the image block a, and MV2 is the backward MV of the image block a. Unidirectional MV: the MVs that do not appear in the above-mentioned bidirectional MV group are unidirectional MVs; such as: (1) The MV1 of the image block B1 relative to the image block A in the historical frame of the frame in which the image block A is located is obtained, and the MV2 of the image block B2 relative to the image block A in the future frame of the frame in which the image block A is located is not obtained, so that the MV1 is called a unidirectional MV. Wherein, the image block B1 is the best matching block of the image block A. (2) Acquiring MV2 of the image block B2 relative to the image block A in a future frame of the frame where the image block A is located, and not acquiring MV1 of the image block B1 relative to the image block A in a historical frame of the frame where the image block A is located, wherein the MV2 is called unidirectional MV; wherein, the image block B2 is the best matching block of the image block a. Prediction refers to finding image data similar to the prediction block, also referred to as a reference block of the prediction block. By encoding/compressing the difference between the prediction block and the reference block of the prediction block, redundant information in the encoding/compression is reduced. Wherein the difference between the prediction block and the reference block may be a residual resulting from subtracting corresponding pixel values of the prediction block and the reference block. Prediction includes intra prediction and inter prediction. The intra-frame prediction refers to searching a reference block of a prediction block in a frame where the prediction block is located, and the inter-frame prediction refers to searching a reference block of the prediction block in other frames except the frame where the prediction block is located.
A Prediction block refers to a basic Unit for Prediction in a frame of image, and in some standards, the Prediction block is also called a Prediction Unit (PU). Before encoding/compressing a frame of image, the image is divided into a plurality of image blocks, each of which may be divided into a plurality of image blocks again, and so on. In different encoding methods, the number of levels of division may be different, and the operation methods adopted are also different. In different coding standards, the names of image blocks on the same level may be different.
In some video standards, each tile of a plurality of tiles into which a frame of picture is first partitioned is called a Coding Tree Unit (CTU), e.g., 64 × 64, 128 × 128 size; each Coding tree Unit may be further divided into Coding Units (CUs) of square or rectangular shape; each CU finds the most similar block in the reference frame (typically a reconstructed frame around the time domain) as the prediction block for the current CU. The relative displacement between the current image block and the similar block is MV. The process of motion estimation is a process of obtaining a motion vector after searching and comparing a current coding block of a current frame in a reference frame. The motion compensation is a process of obtaining a predicted frame by using the MV and the reference frame, and the predicted frame obtained in the process may have a certain difference from the original current frame, so that the difference between the predicted frame and the current frame needs to be transmitted to a decoding end after processes such as transformation, quantization and the like, and besides, the information of the MV needs to be transmitted to the decoding end. Therefore, the decoding end can reconstruct the current frame through the difference values of the MV, the reference frame, the predicted frame and the current frame. This is the general idea and general flow of inter prediction.
In some video standards, each coding unit may be partitioned into one, two, four, or other number of prediction units according to the prediction mode. In some existing video standards, the prediction unit is the smallest unit in an image, and the prediction unit is not continuously divided into a plurality of image blocks. An "image block" or "current image block" referred to hereinafter refers to a prediction unit (or a coding unit), and an image block may be continuously divided into a plurality of sub-image blocks, each of which may be further predicted.
In the Video compression standard (HEVC), there are three modes of inter Prediction, namely, advanced Motion Vector Prediction (AMVP) mode, skip mode, and Merge mode. In the AMVP mode, the motion parameters need to be directly encoded, that is, the MVD needs to be written into the code stream. In the Merge mode, a motion merging technology is adopted to process motion parameters, a coding end and a decoding end are required to obtain MV information of a space adjacent block and a time domain adjacent block, and the MV of which adjacent block is used is selected at the coding end, so that MVD is not required to be written into a code stream, and only the index of the selected adjacent block is required to be written into the code stream. The Skip mode is a special Merge mode, and also needs to construct a candidate list, except that in the Skip mode, not only the MVD does not need to be transmitted, but also the coefficient residual does not need to be transmitted.
The video encoding or decoding method provided by the embodiment of the present specification can be applied to a video encoding and decoding device, and the video encoding and decoding device can be disposed in a terminal (such as a mobile phone, a tablet computer, a server, or other electronic devices). In some embodiments, the embodiments of the present description may be applied to an aircraft (e.g., a drone), and in other embodiments, the embodiments of the present description may also be applied to other movable platforms (e.g., a drone, a robot, and the like), and the embodiments of the present description are not limited in particular. In some embodiments, the video encoding or decoding method may also be used in a handheld device (e.g., a handheld pan-tilt).
The video encoding or decoding method proposed by the embodiments of the present specification mainly aims at the current problems of the triangle prediction technology in inter-frame prediction, and improves the candidate motion information list. Before describing the present embodiment, a general Merge mode and a triangle prediction mode for constructing a motion information candidate list will be described as an example.
First, an example of obtaining a candidate motion information list in a normal Merge mode is described with reference to fig. 1, where fig. 1 is a schematic diagram of a motion vector candidate block in the Merge mode according to an embodiment of the present disclosure. When acquiring the candidate motion information list in the general Merge mode, it is necessary to acquire a spatial domain candidate list and a temporal domain candidate list, as shown in fig. 1, the spatial domain candidate list is acquired from positions of the boxes 1 to 5 in the figure in sequence, and the temporal domain candidate list is acquired from positions of the boxes numbered 6 and 7 in fig. 1. If the motion vector value can be obtained from the position of 6, the motion vector value is not obtained from the position of 7; if no motion vector value is obtained from the position of 6, then motion vector values are obtained from the position shown in 7.
Next, the candidate motion information list obtained in the triangle prediction mode is illustrated with reference to fig. 1 and fig. 2, and fig. 2 is a schematic diagram of a partition prediction unit in the triangle prediction mode according to an embodiment of the present disclosure. If the current image block is a coding unit CU, when the candidate motion information list is obtained in the triangle prediction mode, the coding unit CU needs to be first divided into two triangular PUs. The dividing manner includes two dividing manners as shown in fig. 2, one is to divide diagonally from the top left corner to the bottom right corner to obtain PU1 and PU2, and the other is to divide diagonally from the top right corner to the bottom left corner to obtain PU1 and PU2.
In the inter-frame prediction technique, an encoding apparatus predicts a current frame (a frame currently being encoded) by a method of motion estimation and motion compensation using a reconstructed frame that has been previously encoded as a reference frame, thereby removing temporal redundant information of a video. For a frame of image, the frame is first divided into large Coding Tree Units (CTUs), for example, 64x64, 128x128 size. Each CTU may be further divided into Coding Units (CUs) of square or rectangular shape. Each CU finds the most similar block in the reference frame (typically a reconstructed frame around the time domain) as a prediction block for the current CU based on the prediction MV of that CU. The relative displacement between the current block and the similar block is a Motion Vector (MV). The motion estimation process is a process of obtaining the MV after searching and comparing the current coding block of the current frame in the reference frame. The motion compensation is a process of obtaining a predicted frame by using the MV and the reference frame, and the predicted frame obtained in this process may have a certain difference from the original current frame, so that the difference between the predicted frame and the current frame needs to be transmitted to a decoding device after processes such as transformation, quantization, and the like, and besides, the information of the MV needs to be transmitted to the decoding device. Therefore, the decoding end carries out inverse quantization and inverse transformation to obtain the difference value of the predicted frame and the current frame, and then the current frame can be reconstructed according to the difference values of the MV, the reference frame, the predicted frame and the current frame. In some embodiments, the triangle prediction mode is only used in the Merge mode and the Skip mode, and only used in the W × H > =64 CU, and the triangularly divided PU1 and PU2 have independent MV and reference frame indexes, and PU1 and PU2 must be uni-directional predicted, that is, the motion vectors in their Merge candidate lists are uni-directional predicted motion vectors. In some embodiments, when constructing the candidate motion information list in the triangle prediction mode, first obtain the spatial candidate list from the five spatial neighboring blocks 1-5 shown in fig. 1, where different from the general Merge mode, when obtaining the temporal candidate list in the triangle prediction mode, it needs to obtain MVs from the temporal neighboring blocks shown in fig. 6 and 7 to form the temporal candidate list, and the spatial candidate list and the temporal candidate list form the current motion information list SMV1.
Since the MV obtained from the positions of the neighboring blocks 1-7 in fig. 1 may be bi-predicted MVs, the bi-predicted MVs in the SMV1 can be converted into uni-directional predicted MVs according to the preset processing rules in the triangle prediction mode, so as to be selected by the two triangles PU1 and PU2. Assuming that the finally obtained candidate motion information list of the current image block is SMV2, the preset processing rule is as follows,
(1) Putting all the MVs which are predicted in the SMV1 in a one-way mode into an SMV2 one by one according to the sequence;
(2) Putting the MVs in the double-prediction List0 in the SMV1 into the SMV2 one by one according to the sequence;
(3) Putting the MVs in the double-prediction List1 in the SMV1 into the SMV2 one by one according to the sequence;
(4) The average values of the two MVs in List0 and List1 of the bi-prediction in SMV1 are put one by one into SMV2.
The number of elements in the SMV2 list is fixed, and in the above steps 1 to 4, it is necessary to detect whether the length of the SMV2 reaches a preset value every time an MV is put in, and once the length of the SMV2 reaches the preset value, the process is terminated, and the subsequent MVs will not perform the SMV2 list.
The encoding end may select an MV from the candidate list for each sub-image block, and transmit the index value in the candidate list b where the selected MV is located and the triangle partitioning manner to the decoding end, or may generate a combination index from the index value in the candidate list b where the selected MV is located, and transmit the combination index to the decoding end, where the combination index may be further assigned with the triangle partitioning manner. It can be understood that, because the finally determined motion information candidate lists used in the motion compensation process are different in construction manner, based on the difference in construction manner, the MV selected by the same image block can be obtained from different motion information candidate lists, so that when the index value corresponding to the selected MV is determined, the finally determined motion information candidate list can be used.
It is of course understood that the motion information candidate list finally used for motion compensation may also be constructed in the above manner for the case where the image block is divided into a plurality of sub image blocks having other shapes, and the above is only an exemplary illustration of the construction of the motion information candidate list for the case where the image block is divided into sub image blocks having triangular shapes.
However, this method of constructing the motion vector candidate list needs to traverse all the candidate MVs and perform double MV to single MV recombination (that is, one double MV becomes two single MVs), and determine whether the recombined MVs are repeated, and needs to add the MVs that are determined and not repeated to the candidate list b, and at the same time, both the single MVs of one double MV may be added to the candidate list b, so that the processing complexity of encoding and decoding the image block is high. In general, the conversion from the current motion information list SMV1 to the candidate motion information list SMV2 of the previous image block can be implemented by the following steps:
first, traverse the current motion information list SMV1 and take out all single MVs and put them in SMV2.
Secondly, traversing the current motion information list SMV1, and taking out all the MVs of list0 of double MVs and putting the MVs into SMV2.
Thirdly, traversing the current motion information list SMV1, and taking out all the MVs of list1 of the double MVs and putting the MVs into an SMV2.
Fourthly, traversing the current motion information list SMV1, and taking out all the MVs of list0 and list1 of the double MVs and putting the MVs into an SMV2.
Fifth, 0MV is added.
In the above process, it is equivalent to go through SMV1 four times. In the process of adding the MV to the SMV2, as long as the SMV2 is found to reach 5, the subsequent steps are not carried out. In the first to fourth processes, for each MV added to SMV2, it is necessary to determine whether the MV is repeated with the MV already existing in SMV2, and if so, the MV is not added.
For the above process, all or part of the process of judging the weight can be removed, and when the MV is added into the SMV2, whether the same MV exists or not is not judged, or the number of traversal times is reduced.
The following scheme can be adopted to reduce the traversal times:
a) And in the scheme, four traversals are changed into three traversals.
The scheme can remove the fourth step in the scheme of converting the SMV1 into the SMV2, namely only the first step, the second step, the third step and the fifth step are reserved, so that only three times of traversal is needed.
Or, the second and third steps in the scheme of converting SMV1 into SMV2 are combined, that is, list0 and list1 of a double MV are sequentially put into SMV2, so that only three traversals are needed.
b) In the scheme, four traversals are changed into two traversals.
According to the scheme, the fourth step in the scheme of converting SMV1 into SMV2 can be removed, and meanwhile, the second step and the third step are combined, namely the first step, the combined second step and third step and the fifth step are reserved, so that only two traversals are needed.
Or, the first to third steps in the scheme for converting SMV1 into SMV2 are merged, that is, the merged steps of the first to third steps, the fourth step and the fifth step are retained, so that only two traversals are required.
c) In the scheme, four traversals are changed into one traversal.
According to the scheme, the first step, the second step and the third step can be combined, and meanwhile, the fourth step is removed, namely the unidirectional MV of the SMV1 is directly put into the SMV2, and the bidirectional MV is split into two unidirectional MVs to be put into the two unidirectional MVs.
Alternatively, the first, second, third and fourth steps are merged, i.e. only one traversal is needed, where the uni-directional MV is put directly, the bi-directional MV is split into two uni-directional MVs to put in, and the average of the two MVs in the bi-predictive List0 and List1 in SMV1 is put into SMV2 one by one.
In the above process, it is not determined whether the same MV exists and the number of traversals is reduced may be used in combination.
For example, in the scheme a), the fourth step in the scheme of converting SMV1 into SMV2 is removed, and only the first, second, third and fifth steps are retained, but the SMV1 is not traversed.
And after the second step and the third step in the scheme of converting SMV1 into SMV2 are merged, each merged step is not traversed, or only partial steps are traversed
Similarly, in the scheme b), the traversal is not performed on the first step, the step after the second step and the third step are combined, the traversal is performed on the fifth step, or only partial steps are performed. As a construction method of the candidate list, when the inter prediction mode is the first merge mode, a first motion information candidate list (SMV 1) of the current image block in the first merge mode may be obtained; and when the inter-frame prediction mode is the second merging mode, acquiring a first motion information candidate list (SMV 1) of the current image block, and if the first candidate MV list comprises bidirectional MVs, recombining the MVs in the first motion information candidate list (SMV 1) to obtain a second motion information candidate list (SMV 2) of the current image block in the second merging mode.
As for the first Merge mode and the second Merge mode, in the VVC standard, inter prediction modes exist for image blocks, including a Merge mode (including Skip mode) and an Advanced Motion Vector Prediction (AMVP) mode.
In an alternative embodiment, when the inter prediction mode is the first merge mode, a first candidate MV list of the current image block in the first merge mode is obtained. Specifically, the first merge mode in this embodiment is a normal merge mode, which is a merge mode similar to the merge mode in the HEVC standard. The following describes the construction of the first candidate MV list of the current image block in the first merge mode. And acquiring the spatial MVs of the K spatial candidate blocks of the current image block according to a preset spatial MV acquisition sequence. The specific obtaining method is a method in the prior art, and is not described in this embodiment again. Specifically, the preset airspace MV acquisition sequence is as follows in sequence: the image processing apparatus comprises a first image block adjacent to a first corner of a current image block and located on a first side of the current image block, a second image block adjacent to a second corner of the current image block and located above the current image block, a third image block adjacent to the second corner of the current image block and located above the current image block, a fourth image block adjacent to the first corner of the current image block and located on the first side of the current image block, and a fifth image block adjacent to a third corner of the current image block and located on the first side of the current image block. Wherein the first corner and the second corner are opposite corners. That is, the order of obtaining the spatial MVs of each spatial candidate block is sequentially a first image block, a second image block, a third image block, a fourth image block and a fifth image block. And acquiring the space domain MVs of the F time domain candidate blocks of the current image block according to a preset time domain MV acquisition sequence. The preset time domain MV acquisition sequence is as follows: and a sixth image block adjacent to a fourth corner of the current image block and located on the second side of the current image block, wherein the current image block is adjacent to a co-located image block in the encoded image. Wherein the fourth corner and the third corner are opposite corners. Namely, the time domain MVs of the time domain candidate blocks are obtained and sequentially the sixth image block and the co-located image block of the current image block in the adjacent coded image. Adding the obtained space-domain MVs into a first candidate MV list according to a preset space-domain MV obtaining sequence, adding the obtained time-domain MVs into the first candidate MV list according to the preset time-domain MV obtaining sequence, and obtaining a first candidate MV list of the current image block, wherein the number of included MVs is a first preset threshold value, or the number of included MVs and a first candidate MV list, behind a preset filling vector, are a second preset threshold value. The default padding vector may be a vector with a component of 0.
And when the inter-frame prediction mode is the second combination mode, acquiring a first candidate MV list of the current image block, and if the first candidate MV list comprises bidirectional MVs, recombining the MVs in the first candidate MV list to obtain a second candidate MV list of the current image block in the second combination mode. Specifically, the second merging mode in this embodiment is a triangle merging mode, and the triangle merging mode is a merging mode corresponding to when the current image block is equally divided into two triangle image blocks.
And the triangle prediction is a corresponding prediction method when the current image block is equally divided into two triangle image blocks. In the triangle prediction method, the current image block may be divided by a diagonal line from the top left corner to the bottom right corner of the current image block, and may also be divided by a diagonal line from the top right corner to the bottom left corner of the current image block, resulting in two Prediction Units (PUs). If no bidirectional MV group exists in the first candidate MV list and the number of MVs in the first candidate MV list is equal to a second preset threshold, the first candidate MV list may be determined to be a second candidate MV list of the current image block. If no bidirectional MV group exists in the first candidate MV list and the number L of MVs in the first candidate MV list is less than a second preset threshold K, a K-L preset filling vector can be added to the first candidate MV list to obtain a second candidate MV list of the current image block. The preset padding vector may be a vector whose elements are all 0. If no bidirectional MV group exists in the first candidate MV list and the number L of MVs in the first candidate MV list is greater than a second preset threshold K:
(1) Deleting the K +1 th to L-th MVs in the first candidate MV list, and determining the updated first candidate MV list as a second candidate MV list of the current image block.
(2) And extracting K MVs which are ranked at the top K in the first candidate MV list to obtain a second candidate MV list of the current image block, wherein the second candidate MV list of the current image block comprises the K MVs ranked at the top K in the first candidate MV list.
If the first candidate MV list has a bidirectional MV group, recombining the MVs in the first candidate MV list to obtain the candidate MV list including the MVs that are all unidirectional MVs, wherein the recombination method is a recombination method of the second merging mode in the VCC standard. The specific implementation of the second candidate MV list, in which the MVs included in the first candidate MV list are all unidirectional MVs, by recombining the MVs is as follows:
for each uni-directional MV in the first candidate MV list:
adding the unidirectional MV to a second candidate MV list according to the sequence of the unidirectional MV in the first candidate MV list, and determining the relation between the number of MVs in the current second candidate MV list and a second preset threshold;
1. and if the number of the MVs in the current second candidate MV list is equal to a second preset threshold, stopping adding the MVs to the candidate MV list.
2. And if the number of the MVs in the current second candidate MV list is less than a second preset threshold and the unidirectional MVs exist after the unidirectional MVs, adding a first unidirectional MV after the unidirectional MV in the first candidate MV list to the candidate MV list.
3. If the number of MVs in the current second candidate MV list is less than a second preset threshold and there is no uni-directional MV after the uni-directional MV, for each bi-directional MV group in the first candidate MV list:
according to the sequence of the bidirectional MV group in the first candidate MV selection list, adding forward MVs in the bidirectional MV group into the candidate MV list, and determining the relationship between the number of MVs in the current second candidate MV list and a second preset threshold;
31. and if the number of the MVs in the current second candidate MV list is equal to a second preset threshold, stopping adding the MVs to the candidate MV list.
32. If the number of MVs in the current second candidate MV list is less than a second preset threshold and a bidirectional MV group exists after the bidirectional MV group, adding a forward MV from the MV of a first bidirectional MV group after the bidirectional MV group to the current second candidate MV list.
33. If the number of MVs in the current second candidate MV list is less than the second preset threshold and no bi-directional MV group exists after the bi-directional MV group, for each bi-directional MV group in the first candidate MV list:
adding backward MVs in the bidirectional MV group into the candidate MV list according to the sequence of the bidirectional MV group in the first candidate MV list, and determining the relationship between the number of MVs in the current second candidate MV list and a second preset threshold;
331. if the number of the MVs in the current second candidate MV list is equal to a second preset threshold, stopping adding the MVs to the candidate MV list;
332. if the number of MVs in the current second candidate MV list is less than a second preset threshold and a bidirectional MV group exists after the bidirectional MV group, adding a backward MV in a first bidirectional MV group after the bidirectional MV group to the current second candidate MV list.
333. If the number of MVs in the current second candidate MV list is less than the second preset threshold and no bi-directional MV group exists after the bi-directional MV group, for each bi-directional MV group in the first candidate MV list:
according to the sequence of the bidirectional MV group in the first candidate MV selection list, adding the average value of forward MVs and backward MVs in the bidirectional MV group into the candidate MV list, and determining the relation between the number of MVs in the current second candidate MV list and a second preset threshold;
3331. if the number of the MVs in the current second candidate MV list is equal to a second preset threshold, stopping adding the MVs to the candidate MV list;
3332. if the number of MVs in the current second candidate MV list is less than the second preset threshold and a bidirectional MV group exists after the bidirectional MV group, adding the average value of the middle forward MV and the backward MV in the MVs of the first bidirectional MV group after the bidirectional predicted MV group to the current second candidate MV list.
3333. If the number of MVs in the current second candidate MV list is less than the second preset threshold and no bi-directional MV group exists after the bi-directional MV group: and adding at least one preset filling vector to the candidate MV list to obtain the candidate MV list of which the sum of the number of the included MVs and the number of the preset filling vectors is a second preset threshold value. The embodiment of the present specification provides two schemes to construct a motion information candidate list, where in the first scheme, the candidate motion information list is obtained on the basis of the existing triangle prediction mode, and for a CU of W × H > =64, all bi-predicted MVs in the candidate motion information list are converted into integer pixel precision, and meanwhile, no recombination of MVs is required, that is, bidirectional MVs are not required to be split into unidirectional MVs, so that the process of constructing the MV candidate list is simplified. In addition, the scheme also performs triangle prediction on the CUs with W × H <64, converts all MVs (unidirectional MVs and bidirectional MVs) in the candidate motion information list into integer pixel precision aiming at the CUs with the sizes, and does not perform the recombination process of the candidate motion information list, thereby improving the performance of video coding and decoding.
Scheme two, the present scheme obtains a candidate motion information list on the basis of a normal Merge (Merge) mode, except that the present scheme converts all biprediction MVs in the candidate motion information list to integer-pixel precision for a CU of W × H > =64, while also performing triangle prediction on CUs of W × H <64 or 16< -W × H <64, and converts all MVs in the candidate list to integer-pixel precision for CUs of these sizes. Therefore, independent candidate lists do not need to be maintained for triangle prediction, and meanwhile, under the common Merge mode, MVs introduced by other technologies can also be used in triangle prediction, so that the performance of video coding and decoding is improved.
The following describes a video encoding or decoding method provided in an embodiment of the present specification, with reference to the accompanying drawings.
Referring to fig. 3 in particular, fig. 3 is a schematic flowchart of a video encoding or decoding method according to an embodiment of the present disclosure. The method can be applied to a video coding and decoding device, wherein the explanation of the video coding and decoding device is as described above, and is not described herein again. Specifically, the method of the embodiments of the present specification includes the following steps.
S301: a first candidate motion information list of a current image block is obtained, wherein the first candidate motion information list contains predicted motion information, and the predicted motion information comprises a motion vector value.
In this embodiment, the video encoding and decoding device may obtain a first candidate motion information list of a current image block, where the first candidate motion information list contains predicted motion information, and the predicted motion information includes reference image information and a motion vector value. In some alternative embodiments, the current image block may be a Coding Unit (CU). In some embodiments, when acquiring a first candidate motion information list of a current image block, a video encoding and decoding device may determine the first candidate motion information list of the current image block according to a Merge (Merge) mode; or, determining a first candidate motion information list of the current image block according to a triangle prediction mode.
In one embodiment, the current image block may be a coding unit CU, and when determining the first candidate motion information list of the current image block according to a Merge mode, the video encoding and decoding apparatus may obtain a spatial candidate list and a temporal candidate list of the Merge mode, and determine the first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list. In some embodiments, there is no need to reorganize the first candidate motion information list during the determination of the first candidate motion information list of the coding unit CU according to the Merge mode, thereby simplifying the construction of the first candidate motion information list. In some embodiments, the length of the first candidate motion information list (i.e., the number of elements in the first candidate motion information list) is fixed to a predetermined value, e.g., the number of elements in the first candidate motion information list is fixed to 5.
Specifically, as illustrated in fig. 1 as an example, the video coding and decoding device may sequentially select a motion vector value from positions of temporal neighboring blocks 1 to 5 in fig. 1 as the spatial candidate list of the Merge mode, the video coding and decoding device may sequentially select a motion vector value from positions of temporal neighboring blocks 6 and temporal neighboring blocks 7 in fig. 1 as the temporal candidate list of the Merge mode, and if the video coding and decoding device obtains a motion vector value from a position of temporal neighboring blocks 6 in fig. 1, the video coding and decoding device does not obtain a motion vector value from a position of temporal neighboring blocks 7 in fig. 1.
In some embodiments, the current tile may be a coding unit CU, and the video codec device may divide the coding unit CU into two triangular prediction units PU when determining the first candidate motion information list for the current tile according to a triangular prediction mode. The video coding and decoding device may obtain current motion information lists of the two triangular prediction units PU, and determine a first candidate motion information list of the current image block according to the current motion information lists of the two prediction units PU.
In some embodiments, when determining the first candidate motion information list of the current image block according to the current motion information lists of the two prediction units PU, the video encoding and decoding apparatus may detect whether a current motion vector in the current motion information list is a unidirectional prediction value, and if the detection result is negative, may convert the current motion vector into a unidirectional prediction motion vector, and determine the first candidate motion information list of the current image block according to the converted unidirectional prediction motion vector.
In one embodiment, when determining the current motion information list, the video encoding and decoding apparatus may obtain a spatial candidate list and a temporal candidate list of the Merge mode, and determine the first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list. In some embodiments, the obtaining of the first candidate motion information list in the triangle prediction mode is different from the obtaining of the first candidate motion information list in the Merge mode, where if the video codec device obtains the motion vector value at the position of 6 in fig. 1, the video codec device does not obtain the motion vector value at the position of 7, and the video codec device in the triangle prediction mode needs to obtain the motion vector values at the positions shown by the temporally neighboring block 6 and the temporally neighboring block 7 in fig. 1.
Specifically, as illustrated in fig. 1, the video coding and decoding device may sequentially select a motion vector value from positions of temporal neighboring blocks 6 and 7 in fig. 1 as a spatial candidate list of the triangle prediction mode, and the video coding and decoding device may sequentially select a motion vector value from positions of temporal neighboring blocks 1 to 5 in fig. 1 as a temporal candidate list of the triangle prediction mode. The video coding and decoding device can determine the current motion information list according to the spatial domain candidate list and the time domain candidate list.
In some embodiments, since the positions of the seven candidate neighboring blocks 1-7 in fig. 1 may be bi-predicted motion vector values, it is necessary to convert the bi-predicted motion vector values in the current motion information list into uni-directional predicted motion vector values to form the first candidate motion information list. In some embodiments, the video codec device may convert the bi-predictive motion vector values into uni-predictive motion vector values according to a preset processing rule to determine the first candidate motion information list of the current image block.
For example, assuming that the current motion information list is SMV1 and the first candidate motion information list is SMV2, the video codec device may sequentially put motion vector values MV of unidirectional prediction in all SMV1 into SMV2 in order. And then detecting whether the length of the SMV2 reaches a preset value, if so, determining that the MVs in the SMV2 are full, stopping conversion, and if not, sequentially putting the MVs in the double-prediction airspace candidate list in the SMV1 into the SMV2 in sequence. The video coding and decoding device can continuously detect whether the length of the SMV2 reaches a preset value, if the detection result is yes, the conversion is stopped, and if the detection result is no, the MVs in the double-prediction time domain candidate list in the SMV1 can be sequentially placed into the SMV2. If the video coding and decoding device detects that the length of the SMV2 does not reach a preset value, the average value of two MVs in the double-prediction space domain candidate list and the time domain candidate can be sequentially put into the SMV2 until the length of the SMV2 reaches the preset value.
By the embodiment, the current motion vector is converted into the motion vector of the unidirectional prediction, so that the problem that if two PUs of the triangular prediction are both bi-predicted MVs in the motion compensation process, information of 4 CUs needs to be taken by a CU of the triangular prediction (each PU takes out two CUs pointed by the MVs), compared with a CU of a common bi-prediction mode (only information of two CUs needs to be taken out), the bandwidth consumption is doubled, and the bandwidth utilization rate is improved.
S302: converting the precision of the motion vector values.
In the embodiment of the present specification, the video codec device may convert the precision of the motion vector value. In some embodiments, said converting the precision value of the motion vector comprises converting a high pixel precision motion vector value to a low pixel precision motion vector value, e.g. converting a 1/4 pixel precision motion vector to a half precision motion vector or a full precision motion vector.
In some embodiments, the video codec device may convert the precision of the motion vector values according to the size of the current image block.
In some embodiments, the size of the current image block may consist of the width and height of one coding unit CU, i.e., the size of the current image block may be W × H. In some embodiments, the video processing device may convert the precision of motion vector values in the first candidate motion information list when constructing the first candidate motion information list. In some embodiments, the video processing device may readjust the precision of the motion vector values in the first candidate motion information list when receiving a call instruction for the motion vector values after constructing the first candidate motion information list.
In the process of motion estimation, the motion vector of an object between two adjacent frames is not necessarily exactly an integer number of pixel units due to the continuity of the motion of a natural object. To increase the accuracy of motion vectors, motion estimation for the luma component in HEVC employs motion vectors with 1/4 pixel accuracy. However, there are no samples at fractional pixels in the digital video, and generally, in order to achieve 1/K pixel accuracy estimation, it is necessary to approximately interpolate the values of these fractional pixel points, that is, to perform K-fold interpolation in the row direction and column direction of the reference frame, and to search in the image after interpolation. In the process of interpolating the current image block, the pixel points in the current image block and the pixel points in the adjacent region thereof need to be used.
In the process of 1/4 pixel interpolation, for an image block with a size of 8 × 8/4 × 8/4 × 4/8 × 4, 3 points on the left side and 4 points on the right side outside the block are used to generate pixel values of interpolation points, as shown in fig. 10, where fig. 10 is a schematic diagram of pixel interpolation provided by an embodiment of the present specification. As shown in FIG. 10, a 0,0 And d 0,0 1/4 pixel point, b 0,0 And h 0,0 Is a half pixel point, c 0,0 And n 0,0 Is 3/4 pixel point. Suppose the current block is 2 × 2 block A 0,0 ~A 1,0 ,A 0,0 ~A 0,1 For calculating all interpolation points in the 2 × 2 image block, the surrounding 2 × 2 blocks need to use some points outside the 2 × 2 block, including 3 points on the left, 4 points on the right, 3 points on the top, and 4 points on the bottom.
In one embodiment, the video encoding and decoding device may determine whether the size of the current image block satisfies a first condition when converting the precision of the motion vector value according to the size of the current image block; if so, converting the motion vector value of the double prediction in the first candidate motion information list of the current image block into integer pixel precision.
In some embodiments, the satisfying the first condition comprises: the current image block has a bi-predictive motion vector, and the size of the current image block meets a first preset range threshold. In some embodiments, said meeting a first preset range threshold comprises: the size of the current image block is greater than or equal to 64 pixels. In other embodiments, the first preset range threshold may further include other range values, and the embodiments of this specification are not particularly limited.
For example, assuming that the current image block is a coding unit CU and the size of the coding unit CU is 8 × 8, and thus the size of the coding unit CU is 8 × 8 equal to 64, if it is detected that bi-predicted motion vector values exist in a first candidate motion information list of the current image block, the video codec device may convert all bi-predicted motion vector values in the first candidate motion information list into integer pixel precision.
If the existing triangle prediction mode is adopted, the reason that the current triangle prediction is only used for the CU with W multiplied by H being more than or equal to 64 (W represents the pixel width of the CU, and H represents the pixel height of the CU) is also related to the bandwidth consumption. Taking fig. 11a as an example, fig. 11a is a schematic diagram of a processing coding unit for triangle prediction provided in the prior art, and assuming that the worst case of HEVC (1/4 pixel precision MV) is 8 × 8 bi-directional inter-frame prediction CU, a reference pixel point is (8 + 7) × (8 + 7) x2=450. Triangle prediction of Versatile Video Coding, VVC if the minimum processing CU is set to 4x4, the reference pixel count of a 4x4 bi-directional inter-predicted CU under the worst case (1/4 pixel precision MV) is (4 + 7) × 2 + 4=968, which increases VVC by 115% compared to HEVC, resulting in a larger bandwidth pressure. For another example, if the CU for triangle prediction minimization process is set to 4 × 8 or 8 × 4, the worst case (1/4 pixel precision MV) of HEVC is the bi-directional inter prediction CU of 8 × 8, and the reference pixel point is (8 + 7) × 2=450. Triangle prediction of VVC if the minimum processing CU is set to 4 × 8/8 × 4, the reference pixel count of CU for the worst case (1/4 pixel precision MV) of CU for 4 × 8/8 × 4 bi-directional inter prediction is (8 + 7) (4 + 7) × 2 + 4=660, which increases VVC by 47% compared to HEVC, resulting in a larger bandwidth pressure.
Therefore, the embodiment of the specification allows the triangular prediction mode to carry out double prediction, and carries out whole pixel precision conversion on the motion vector value of the double prediction, thereby reducing the bandwidth pressure and improving the bandwidth utilization rate.
In one embodiment, if the video codec device determines that the current image block does not satisfy the first condition, all motion vector values in the first candidate motion information list of the current image block may be converted into integer pixel precision.
For example, assuming that the current image block is a coding unit CU and the size of the coding unit CU is 4 × 8, and thus the size of the coding unit CU 4 × 8 is equal to 32 and 32 is smaller than 64, the video codec device may convert all motion vector values in the first candidate motion information list to integer pixel precision.
By converting all motion vector values in the first candidate motion information list of the current image block which does not satisfy the first condition into integer pixel precision, the limitation that the current triangle prediction mode is only used for image blocks with more than or equal to 64 pixels can be avoided, and the performance of video coding and decoding is improved.
In one embodiment, the motion vector values comprise a horizontal component and a vertical component; the video encoding and decoding device may acquire a horizontal component and a vertical component of a motion vector value in a first candidate motion information list of the current image block when converting the precision of the motion vector value, and convert the horizontal component and the vertical component of the motion vector value into integer pixel precision.
In one embodiment, the video codec device may determine a conversion coefficient s according to a storage precision of the motion vector value when converting a horizontal component and a vertical component of the motion vector value to integer pixel precision, and convert the horizontal component of the motion vector prediction value to integer pixel precision using a first preset conversion rule and the conversion coefficient s; and converting the vertical component of the motion vector predicted value into the integer pixel precision by using a second preset conversion rule and the conversion coefficient s.
In some embodiments, the relation between the conversion coefficient s and the storage precision of the motion vector value may be exemplified, assuming that the storage precision of the motion vector value is 1/m, if m =2 n Then s = n may be determined. For example, assume that the motion vector value has a storage accuracy of 1/16=1/2 4 Then the conversion factor can be determined to be 4.
In one embodiment, the video codec device may determine whether a horizontal component of the motion vector predictor is greater than or equal to 0 when converting the horizontal component into integer pixel precision using a first preset conversion rule and the conversion coefficient s, may shift a difference between the conversion coefficient s and 1 by 1 to the left if it is determined that the horizontal component is greater than or equal to 0 to obtain a first shift value, and shift a sum of the first shift value and the horizontal component by s to the right to obtain a second shift value, and may shift the second shift value by s to the left to obtain integer pixel precision of the horizontal component.
In some embodiments, when the horizontal component is greater than or equal to 0, assuming that the horizontal component is MV1x and the integer pixel precision of the horizontal component is MV2x, the first preset transformation rule may include:
if MV1x > =0, MV2x = ((MV 1x + (1 < < (s-1))) > > s) < < s.
Wherein, said "<<"for left-hand movement, said">>"for right movement, said" 1<<(s-1) "is used to denote a first shift value, the" (MV 1x + (1)<<(s-1)))>>s "is used to denote the second shift value. In some embodiments, if MV1x is left-shifted by n bits, this means that MV1x is multiplied by 2 n Such asIf MV1x is shifted to the right by n, it means that MV1x is divided by 2 n The quotient obtained by counting the remainder, wherein n is a positive integer greater than or equal to 1.
For example, assuming that the motion vector value is stored with a precision of 1/4, the video codec device may determine that the conversion coefficient s is 2, and if the horizontal component MV1x is 3 and the binary value is "11", the horizontal component MV1x is greater than 0, and mv2x is calculated as follows:
calculate "s-1", when s =2, s-1=2-1=1;
calculating the result of "1< (s-1)", 1< <1 is a binary number of 10, decimal number of 2;
calculating 'MV 1x + (1 < < (s-1))', and when MV1x =3, MV1x + (1 < < (s-1)) =11+10=101;
(MV 1x + (1 < < (s-1))) > > s "is calculated, the binary value 101 of 5 is right shifted by 2 bits, 101> >2=1, according to the previous results;
finally, "((MV 1x + (1 < < (s-1))) > > s) < < s", MV2x =1< <2=100 is calculated.
It can be seen that, in the above process, the video codec device may shift the difference 1 between the transform coefficients 2 and 1 by 1 bit to the left to obtain a first shift value 2, shift the sum 5 of the first shift value 2 and the horizontal component 3 by 2 bits to the right to obtain a second shift value 1, and shift the second shift value 1 by 2 bits to the left to obtain the integer pixel precision MV2x of the horizontal component as 4.
In other embodiments, when the horizontal component is greater than or equal to 0, the first preset conversion rule includes but is not limited to the above conversion rule, and may be other conversion rules, and only the horizontal component needs to be converted into a whole pixel. For example, the first preset conversion rule may further be:
if MV1x > =0, mv2x = (MV 1x > > s) < < s.
For example, assuming that the storage precision of the motion vector value is 1/4, the video codec device may determine that the conversion coefficient s is 2, and if the horizontal component MV1x is 5 and the binary value is "101", the horizontal component MV1x is greater than 0, and mv2x is calculated as follows:
calculating "MV1x > > s", when MV1x =5, the result of 5> >2 is binary number 001, decimal number 1;
the result of calculating "(MV 1x > > s) < < s", MV2x =1< <2 is a binary number 100, decimal number 4.
It can be seen that, in the above process, the video encoding and decoding device may shift MV1x, that is, 5, by 2 to the right to obtain 1, and then shift 1 by 2 to the left to obtain the integer pixel precision MV2x of the horizontal component, which is 4.
In some embodiments, if the video codec device determines that the horizontal component is less than 0, the video codec device may shift the difference between the first shift value and the horizontal component by s bits to the right to obtain a third shift value, and shift the third shift value by s bits to the left and take the opposite number to obtain the integer pixel precision of the horizontal component. In some embodiments, when the horizontal component is less than 0, assuming that the horizontal component is MV1x and the integer pixel precision of the horizontal component is MV2x, the first preset conversion rule includes:
if MV1x <0, MV2x = - ((-MV 1x + (1 < < (s-1))) > > s) < < s.
Wherein, "< <", is used for representing left shift, and, "> > > is used for representing right shift, the" -MV1x "represents negation of MV1x, and the" (-MV 1x + (1 < < (s-1))) > > s "is used for representing third shift value.
For example, assuming that the storage precision of the motion vector value is 1/4, the video codec device may determine that the conversion coefficient s is 2, and if the horizontal component MV1x is-7, the horizontal component MV1x is smaller than 0, and the calculation process of mv2x is as follows:
calculating "s-1", when s =2, s-1=2-1=1;
calculating "1< (s-1)", the result of 1< <1 is binary number 10, decimal number 2;
calculating "-MV1x + (1 < < (s-1))", when MV1x = 7, -MV1x + (1 < < (s-1)) =111+10=1001;
calculating "(-MV 1x + (1 < < (s-1))) > > s", right-shifting the binary value 1001 of 9 by 2 bits, 1001> >2=2, according to the previous result;
finally, "- ((((-MV 1x + (1 < < (s-1))) > > s) < < s", MV2x = -2< <2= -8 is calculated.
It can be seen that, in the above process, the video codec device may shift the difference 1 between the conversion coefficients 2 and 1 by 1 bit to the left to obtain a first shift value 2, invert the horizontal component-7 to obtain 7, shift the sum 9 of the first shift values 2 and 7 by 2 bits to the right to obtain a third shift value 2, and shift the third shift value 2 by 2 bits to the left and invert to obtain the integer pixel precision MV2x of the horizontal component being-8.
In other embodiments, when the horizontal component is smaller than 0, the first preset conversion rule includes, but is not limited to, the above conversion rule, and may be other rules, and only the horizontal component needs to be converted into an integer pixel. For example, the first preset conversion rule may further be:
if MV1x <0, MV2x = - (((-MV 1 x) > > s) < < s).
For example, assuming that the storage precision of the motion vector value is 1/4, the video codec device may determine that the conversion coefficient s is 2, and if the horizontal component MV1x is-5, the horizontal component MV1x is smaller than 0, and the mv2x is calculated as follows:
-MV1x > > s "is calculated, when MV1x = -5, the result for 5> >2 is binary 001, decimal 1;
the calculation of "(-MV 1x > s) < < s",1< <2 results in a binary number of 100, decimal number 4.
Calculate "- ((((-MV 1 x) > > s) < < s)", MV2x = -4.
It can be seen that, in the above process, the video encoding and decoding device may invert the MV1x, i.e. minus 5, to obtain 5, shift the 5 to the right by 2 to obtain 1, and then shift the 1 to the left by 2 to obtain the integer pixel precision MV2x of the horizontal component, which is minus 4.
In one embodiment, when converting the vertical component of the motion vector predictor into integer pixel precision by using a second preset conversion rule and the conversion coefficient s, the video encoding and decoding device may determine whether the vertical component is greater than or equal to 0, if the vertical component is determined to be greater than or equal to 0, may shift a difference between the conversion coefficient s and 1 by 1 to the left to obtain a fourth shift value, shift a sum of the fourth shift value and the vertical component by s to the right to obtain a fifth shift value, and shift the fifth shift value by s to the left to obtain the integer pixel precision of the vertical component. In some embodiments, when the vertical component is greater than or equal to 0, assuming that the vertical component is MV1y and the integer pixel precision of the vertical component is MV2y, the second preset transformation rule may include:
if MV1y > =0, MV2y = ((MV 1y + (1 < < (s-1))) > > s) < < s.
The specific embodiments are exemplified by the foregoing, and are not described herein again.
In other embodiments, when the vertical component is greater than or equal to 0, the second preset conversion rule includes, but is not limited to, the above conversion rule, and may be other rules, and only the vertical component needs to be converted into a whole pixel. For example, the second preset conversion rule may also be:
if MV1y > =0, MV2y = (MV 1y > > s) < < s.
The specific examples are as described above, and thus, detailed description thereof is omitted.
In an embodiment, if the video encoding and decoding device determines that the vertical component is less than 0, the video encoding and decoding device may shift a difference between the fourth shift value and the vertical component by s bits to the right to obtain a sixth shift value, and shift the sixth shift value by s bits to the left and take an inverse number to obtain the integer pixel precision of the vertical component. In some embodiments, when the vertical component is less than 0, assuming that the vertical component is MV1y and the integer pixel precision of the vertical component is MV2y, the second preset transformation rule comprises:
if MV1y <0, MV2y = - ((-MV 1y + (1 < < (s-1))) > > s) < < s.
In other embodiments, when the vertical component is less than 0, the second preset conversion rule includes, but is not limited to, the above conversion rule, and may be other rules, and only the vertical component needs to be converted into an integer pixel. For example, the second preset conversion rule may be further:
if MV1y <0, MV2y = - (((-MV 1 y) > > s) < < s).
The specific examples are as described above, and thus, detailed description thereof is omitted.
In one embodiment, the motion vector values comprise a horizontal component; the video encoding and decoding device may obtain a horizontal component of a motion vector value in a first candidate motion information list of the current image block when converting the precision of the motion vector value, and convert the horizontal component of the motion vector value into integer pixel precision. The specific embodiments are exemplified by the foregoing, and are not described herein again.
In one embodiment, the motion vector value comprises a vertical component; the video encoding and decoding device may obtain a vertical component of a motion vector value in a first candidate motion information list of the current image block when converting the precision of the motion vector value, and convert the vertical component of the motion vector value into integer pixel precision. The specific embodiments are exemplified by the foregoing, and are not described herein again.
If the existing triangle prediction mode is adopted, the CU to be processed in the triangle prediction minimum is set to be 4 × 8 or 8 × 4, as shown in fig. 11b, fig. 11b is a schematic diagram of another coding unit to be processed in triangle prediction provided by the prior art, and assuming that the worst case of HEVC (1/4 pixel precision MV) is 8 × 8 bi-directional inter prediction CU, the reference pixel point is (8 + 7) × (8 + 7) × 2=450. Triangle prediction of VVC if the minimum processing CU is set to 4 × 8/8 × 4, the reference pixel point number of a CU for 4 × 8/8 × 4 bi-directional inter prediction in the worst case (1/4 pixel precision MV) is (8 + 7) (4 + 7) × 2 + 4=660, which increases VVC by 47% compared to HEVC, resulting in a larger bandwidth pressure.
Therefore, the bandwidth pressure is reduced and the bandwidth utilization rate is improved by the method for performing integer pixel precision conversion on the motion vector values of the double predictions in the embodiment of the specification.
In an embodiment, after the video coding and decoding device converts the precision of the motion vector value according to the size of the current image block, the video coding and decoding device may further reestablish a second candidate motion information list of the current image according to the motion vector value after the precision conversion, so that when the video coding and decoding device receives a call instruction of the first candidate motion information list, the video coding and decoding device may directly call the motion vector value after the precision conversion in the candidate operation information list, thereby improving the efficiency of video coding or decoding.
In this embodiment of the present specification, a video encoding and decoding device may obtain a first candidate motion information list of a current image block, and convert, according to a size of the current image block, precision of a motion vector value in the first candidate motion information list, so as to perform video encoding or decoding according to the first candidate motion information list after the conversion precision. By the implementation mode, the bandwidth utilization rate can be improved, the coding or decoding operation is simplified, and the coding or decoding efficiency is improved.
In the embodiments of the present specification, the candidate motion information sequence may be a merge candidate list (merge candidate list), a triangle prediction merge candidate list (triangle merge candidate list), or another inter prediction candidate list.
As an alternative embodiment, the candidate list may be established by: modifying the construction process of an original triangle prediction merge candidate list into the construction process of a candidate list in a common merge mode; the process combines the construction of two candidate lists into one, and does not carry out the recombination process after the construction of the candidate lists. Step two, for the bidirectional MV directly using the merge candidate list (merge candidate list), selecting one of the unidirectional predicted MVs for the two unidirectional predicted MVs therein; the selection mode can be that the first is selected fixedly, or the second is selected fixedly, or one of the first and the second can be selected according to a preset rule. That is, a whole or partial list of the merge candidate list (merge candidate list) may be used as the candidate list of the MVs, and of course, this embodiment does not exclude MVs obtained by other means as the candidate list.
In a first specific embodiment, the transformation of bi-directionally predicted MVs into uni-directionally predicted MVs may be performed by fixed selection of MVs in List0 (List 0) of bi-directionally predicted as MVs in the candidate List.
In a second specific embodiment, the transformation of bi-directionally predicted MVs into uni-directionally predicted MVs may be performed by fixed selection of MVs in List1 (List 1) in bi-directional prediction as the MVs in the candidate List.
In a third specific embodiment, the MV in List1 (List 1) is scaled to List0 by MV scaling technique, then the MV in List0 (List 0) and List1 (List 1) is averaged, and the reference frame in List0 (List 0) is selected as the reference frame.
In a fourth specific embodiment, the MV in List0 (List 0) is scaled to List1 by MV scaling technique, and then the MV in List1 (List 1) and List0 (List 0) is averaged to pick the reference frame in List1 (List 1) as the reference frame.
In a fifth specific embodiment, the MV in List1 (List 1) is scaled to List0 by MV scaling technique, and then the MV in List0 (List 0) and List1 (List 1) are weighted-averaged, and the reference frame in List0 (List 0) is selected as the reference frame. The weighted weights are determined as follows: (a) According to the reference frame corresponding to the existing MV in the current merge list, if the list0 has more situations, a higher weight is assigned to the MV of the list0, and the value may be fixed, for example, a fixed value within an interval of 0.5 to 1; if there are more cases of list1, a higher weight is assigned to the MV of list1, and this value may be fixed, for example, a fixed value within the interval of 0.5 to 1; (b) setting different weight values according to the size of the image block; (c) And obtaining the weight values according to a statistical mode or obtaining the weight values of different lists in a deep learning mode.
In a sixth specific embodiment, the MV in List0 (List 0) is scaled to List1 by MV scaling technique, and then the MV in List0 (List 0) and List1 (List 1) are weighted-averaged to select the reference frame in List1 as the reference frame. The weighted weights are determined as follows: (a) According to the reference frame corresponding to the existing MV in the current merge list, if the list0 has more situations, a higher weight is assigned to the MV of the list0, and the value may be fixed, for example, a fixed value within an interval of 0.5 to 1; if the list1 is more frequent, the MV of list1 is assigned a higher weight, which may be fixed, for example, a fixed value in the interval of 0.5 to 1; (b) setting different weight values according to the size of the image block; (c) And obtaining the weight values according to a statistical mode or obtaining the weight values of different lists in a deep learning mode.
For the above specific embodiments, the adaptive selection may be performed as follows:
according to the reference frames corresponding to the existing MVs in the current merge list, if the conditions of the first list (list 0) are more, the scheme corresponding to the first specific embodiment is directly used, if the conditions of the first list (list 1) are more, the scheme corresponding to the second specific embodiment is directly used, and if the conditions are the same, the scheme corresponding to the third specific embodiment or the scheme corresponding to the fourth specific embodiment is used.
Different thresholds can be set according to the block size of the current CU, and the corresponding mode is selected when a certain block threshold condition is met. For example, for a CU whose width and height are less than 16, the scheme corresponding to the first embodiment is used; for the CU with the width and the height larger than 64, the scheme corresponding to the second specific embodiment is used; for CUs with width and height between 16 and 64, the schemes corresponding to the other embodiments are used.
The information of the current CU, such as texture information, can also be extracted through a deep learning method to decide which specific embodiment to use.
For the encoding and decoding process, the above methods can be fixed in advance at the encoding and decoding end, so as to avoid writing in additional code streams, and can also make decisions at the encoding end and then write the decision results into the decoding end.
In some embodiments, after converting the precision of the motion vector value, the video codec device may further establish a second candidate motion information list according to the motion vector value after the conversion precision. In some embodiments, the video codec device may convert the precision of the motion vector values to integer pixel precision. In some embodiments, the video codec device may convert all or part of the motion vector values to integer pixel precision. In some embodiments, the video codec device may determine whether the size of the current image block satisfies a preset range. In some embodiments, the video codec device may perform different precision conversion operations on different types of the motion vector values according to a size range of the current image block. In some embodiments, when the size of the current image block satisfies a first condition, the video codec device may convert the bi-predictive motion vector to integer-pixel precision. And when the size of the current image block meets a first condition, converting a horizontal direction component and/or a vertical direction component of the bi-predictive motion vector into integer pixel precision. And when the size of the current image block meets a first condition, converting the motion vector in one direction in the bi-prediction motion vector into integer pixel precision. And when the size of the current image block does not meet the first condition, converting a unidirectional motion vector value and/or a bidirectional motion vector value in the motion vector values into integer pixel precision. The horizontal direction component and/or the vertical direction component of the unidirectional prediction motion vector is converted into integer pixel precision. And converting the motion vector of at least one direction in the bi-predictive motion vector into integer pixel precision. The horizontal direction component and/or the vertical direction component of the bi-predictive motion vector is converted to integer pixel accuracy.
In some embodiments, the video codec device may obtain the first candidate motion information list of the current image block according to a merge candidate list, a triangle prediction merge candidate list, or other inter-prediction candidate lists. The video codec device may directly select one uni-directional predicted MV of the bi-directional MVs in the merge candidate list (merge candidate list). -converting the bi-directional motion vector values in said first candidate list directly to integer pixel precision.
Referring to fig. 4, fig. 4 is a flowchart illustrating another video encoding or decoding method provided in this specification, where the method may be applied to a video encoding or decoding apparatus, and a specific explanation of the video encoding or decoding apparatus is as described above. The embodiment of the present specification schematically illustrates such an implementation process that, after a first candidate motion information list is created, when a call instruction of a motion vector value is received, precision of the motion vector value in the first candidate motion information list is converted. Specifically, the method of the embodiments of the present specification includes the following steps.
S401: a first candidate motion information list of a current image block is obtained.
In this embodiment of the present specification, a video encoding and decoding device may obtain a first candidate motion information list of a current image block, where the first candidate motion information list includes a motion vector value.
In an alternative embodiment, the candidate motion information list may be a merge candidate list (merge candidate list), or a triangle prediction merge candidate list (triangle merge candidate list).
S402: and acquiring the size of the current image block.
In this embodiment, the video encoding and decoding device may obtain the size of the current image block. In some embodiments, the current image block may be one coding unit CU, and in some embodiments, the size of the current image block may be composed of the width and height of one coding unit CU, i.e., the size of the current image block may be W × H.
S403: and when a call instruction of the motion vector value in the first candidate motion information list is received, converting the precision of the motion vector value according to the size of the current image block.
In this embodiment, after acquiring a first candidate motion information list of a current image block, a video encoding and decoding device may convert, according to a size of the current image block, precision of a motion vector value when receiving a call instruction of the motion vector value in the first candidate motion information list. In some embodiments, the video codec device may also convert the precision of the motion vector value when receiving another call request for requesting use of the motion vector value in the first candidate motion information list.
By the implementation of performing integer pixel conversion on the motion vector values in the first candidate motion information list when the first candidate motion information list is called, integer pixel conversion on the motion vector values according to requirements can be realized.
In one embodiment, the video codec device may determine whether the size of the current image block satisfies a first condition when receiving a call instruction of a motion vector value in the first candidate motion information list; and if so, converting the motion vector value of the double prediction in the first candidate motion information list of the current image block into integer pixel precision. The specific embodiments are exemplified by the foregoing, and are not described herein again.
In one embodiment, if the video encoding and decoding device determines that the current image block does not satisfy the first condition, all motion vector values in a first candidate motion information list of the current image block are converted into integer pixel precision. The specific examples are as described above, and are not described herein.
In this embodiment of the present specification, a video encoding and decoding device may obtain a first candidate motion information list of a current image block, obtain a size of the current image block, and convert, when receiving a call instruction of a motion vector value in the first candidate motion information list, precision of the motion vector value according to the size of the current image block. By the implementation mode of performing integer pixel conversion on the motion vector values in the first candidate motion information list when the first candidate motion information list is called, the integer pixel conversion on the motion vector values can be realized according to requirements, the bandwidth utilization rate is improved, the coding or decoding operation is simplified, the coding or decoding efficiency is improved, and the user experience is improved.
Referring to fig. 5, fig. 5 is a flowchart illustrating a further video encoding or decoding method provided in an embodiment of the present disclosure, which may be applied to a video encoding/decoding apparatus, wherein the detailed explanation of the video encoding/decoding apparatus is as described above. The embodiment of the present specification is a schematic illustration of such an implementation process for converting any motion vector value of bi-prediction in the first candidate motion information list into integer pixel precision. Specifically, the method of the embodiments of the present specification includes the following steps.
S501: a first candidate motion information list of a current image block is obtained.
In this embodiment of the present specification, a video encoding and decoding device may obtain a first candidate motion information list of a current image block, and specific embodiments and examples are as described above, and are not described herein again.
S502: and judging whether the size of the current image block meets a second condition, if so, executing step S503, and if not, executing step S504.
In this embodiment of the present specification, the video encoding and decoding apparatus may determine whether the size of the current image block satisfies the second condition, if the determination result is yes, perform step S503, and if the determination result is no, perform step S504. In some embodiments, the second condition includes that at least two bi-predicted motion vectors exist for the current image block, and the size of the current image block satisfies a second preset range threshold. In some embodiments, said satisfying a second preset range threshold includes, but is not limited to, a size of said current image block being less than 64 pixels; or, the size of the current image block is larger than 16 pixels and smaller than 64 pixels. The specific embodiments and examples are as described above and will not be described herein again.
S503: and converting any motion vector value of double prediction in the first candidate motion information list of the current image block into integer pixel precision.
In this embodiment of the present specification, if the video encoding and decoding device determines that the size of the current image block satisfies the second condition, it may convert any motion vector value of the double prediction in the first candidate motion information list of the current image block into integer pixel precision.
In one embodiment, the video codec device may detect whether at least two bi-predicted motion vector values exist in the first candidate motion information list of the current image block before converting any bi-predicted motion vector value in the first candidate motion information list of the current image block into integer pixel precision, and if it is detected that at least two bi-predicted motion vector values exist in the first candidate motion information list, the video codec device may perform the step of converting any bi-predicted motion vector value in the first candidate motion information list of the current image block into integer pixel precision.
For example, assuming that the current image block is a coding unit CU and the size of the coding unit CU is 8 × 8, and thus the size of the coding unit CU is 8 × 8 equal to 64, if it is detected that 2 bi-predicted motion vector values exist in the first candidate motion information list of the current image block, the video codec device may convert any one of the bi-predicted motion vector values in the first candidate motion information list into integer pixel precision.
In the embodiment of the specification, the whole-pixel precision conversion is performed on any one bi-predictive motion vector value, so that the bandwidth pressure is reduced to a certain extent, and the bandwidth utilization rate is improved.
S504: and converting all motion vector values in the first candidate motion information list of the current image block into integer pixel precision.
In this embodiment of the present specification, if the video encoding and decoding device determines that the size of the current image block does not satisfy the second condition, all motion vector values in the first candidate motion information list of the current image block may be converted into integer pixel precision. The specific embodiments and examples are as described above and will not be described herein again.
For example, assuming that the current image block is a coding unit CU and the size of the coding unit CU is 4 × 8, and thus the size of the coding unit CU 4 × 8 is equal to 32 and 32 is smaller than 64, the video codec device may convert all motion vector values in the first candidate motion information list to integer pixel precision.
By converting all motion vector values in the first candidate motion information list of the current image block which does not meet the second condition into integer pixel precision, the limitation that the current triangle prediction mode is only used for image blocks with more than or equal to 64 pixels can be avoided, and the performance of the triangle prediction mode is improved.
In this embodiment of the present specification, a video encoding and decoding device may obtain a first candidate motion information list of a current image block, and determine whether the size of the current image block satisfies a second condition, and if so, may convert any motion vector value of bi-prediction in the first candidate motion information list of the current image block into integer pixel precision; if not, all motion vector values in the first candidate motion information list of the current image block may be converted into integer pixel precision. By the implementation mode, the bandwidth utilization rate is improved to a certain extent, the coding or decoding operation is simplified, and the coding or decoding efficiency is improved.
Referring to fig. 6, fig. 6 is a flowchart illustrating another video encoding or decoding method provided in this specification, where the method may be applied to a video codec device, and a specific explanation of the video codec device is as described above. The present embodiment is a schematic illustration of such an implementation procedure for converting the horizontal component of the motion vector value in the first candidate motion information list into integer pixel precision. Specifically, the method of the embodiments of the present specification includes the following steps.
S601: and acquiring a first candidate motion information list of the current image block.
In this embodiment of the present description, the video encoding and decoding device may obtain the first candidate motion information list of the current image block, and specific embodiments and examples are as described above, and details are not repeated here.
S602: and acquiring the horizontal component of the motion vector value in the first candidate motion information list of the current image block.
In this embodiment, the video encoding and decoding device may obtain a horizontal component of a motion vector value in the first candidate motion information list of the current image block.
S603: the horizontal component of the motion vector value is converted to integer pixel precision.
In this embodiment, the video encoding and decoding device may convert the horizontal component of the motion vector value into integer pixel precision.
In one embodiment, the video codec device may acquire the horizontal component of the motion vector value in the first candidate motion information list of the current image block and convert the horizontal component of the motion vector value into integer pixel precision when converting the horizontal component of the motion vector value into integer pixel precision.
In some embodiments, the video codec device may obtain a horizontal component of a bi-predicted motion vector value when converting the bi-predicted motion vector value to integer pixel precision in the first candidate motion information list for the current image block, and convert the horizontal component of the bi-predicted motion vector value to integer pixel precision.
In some embodiments, when all motion vector values in the first candidate motion information list of the current image block are converted into integer pixel precision, the video codec device may obtain horizontal components of all motion vector values in the first candidate motion information list and convert the horizontal components of all motion vector values into integer pixel precision.
In one embodiment, the video codec device may determine a conversion coefficient s according to a storage precision of the motion vector value when converting the horizontal component of the motion vector value to the integer pixel precision, and convert the horizontal component of the motion vector prediction value to the integer pixel precision using a first preset conversion rule and the conversion coefficient s. In some embodiments, the relationship between the conversion coefficient s and the storage precision of the motion vector value is as described above, and is not described herein again.
In one embodiment, the video codec device may determine whether a horizontal component of the motion vector predictor is greater than or equal to 0 when converting the horizontal component into integer pixel precision using a first preset conversion rule and the conversion coefficient s, may shift a difference between the conversion coefficient s and 1 by 1 to the left if it is determined that the horizontal component is greater than or equal to 0 to obtain a first shift value, and shift a sum of the first shift value and the horizontal component by s to the right to obtain a second shift value, and may shift the second shift value by s to the left to obtain integer pixel precision of the horizontal component. In some embodiments, when the horizontal component is greater than or equal to 0, the first predetermined transformation rule is as described above and is not described herein again.
In other embodiments, when the horizontal component is greater than or equal to 0, the first preset conversion rule includes but is not limited to the above conversion rule, and may be other conversion rules, and only the horizontal component needs to be converted into a whole pixel. The specific embodiments and examples are as described above.
In some embodiments, if the video codec device determines that the horizontal component is less than 0, the video codec device may shift the difference between the first shift value and the horizontal component by s bits to the right to obtain a third shift value, and shift the third shift value by s bits to the left and take the opposite number to obtain the integer pixel precision of the horizontal component. In some embodiments, when the horizontal component is smaller than 0, the first predetermined transformation rule is as described above and is not described herein again.
In other embodiments, when the horizontal component is smaller than 0, the first preset conversion rule includes, but is not limited to, the above conversion rule, and may be other rules, which only need to convert the horizontal component into an integer pixel. The specific embodiments and examples are as described above and will not be described herein again.
In this embodiment, the video encoding and decoding device may obtain a first candidate motion information list of a current image block, obtain a horizontal component of a motion vector value in the first candidate motion information list of the current image block, and convert the horizontal component of the motion vector value into integer pixel precision, so as to perform video encoding or decoding according to the motion vector value after converting the horizontal component into the integer pixel precision. By the implementation mode, the bandwidth utilization rate is improved to a certain extent, the coding or decoding operation is simplified, and the coding or decoding efficiency is improved.
Referring to fig. 7, fig. 7 is a flowchart illustrating a further video encoding or decoding method provided in an embodiment of the present disclosure, which may be applied to a video encoding/decoding apparatus, wherein the detailed explanation of the video encoding/decoding apparatus is as described above. The embodiment of the present specification is a schematic illustration of such an implementation procedure for converting the vertical component of the motion vector value in the first candidate motion information list into integer pixel precision. Specifically, the method of the embodiments of the present specification includes the following steps.
S701: a first candidate motion information list of a current image block is obtained.
As an optional embodiment, the video encoding and decoding device may obtain the first candidate motion information list of the current image block, and the specific embodiments and examples are as described above, and are not described herein again.
S702: and acquiring a vertical component of a motion vector value in a first candidate motion information list of the current image block.
As an alternative embodiment, the video codec device may obtain a vertical component of the motion vector values in the first candidate motion information list of the current image block.
S703: the vertical component of the motion vector value is converted to integer pixel precision.
As an alternative embodiment, the motion vector value may be converted into integer pixel precision by the video codec device, and the vertical component of the motion vector value in the first candidate motion information list of the current image block may be obtained and converted into integer pixel precision by the video codec device. The horizontal component of the motion vector value may or may not be changed. More preferably, the pixel precision of the horizontal component of the motion vector values remains unchanged.
In some embodiments, the video codec device may obtain a vertical component of a bi-predicted motion vector value when converting the bi-predicted motion vector value in the first candidate motion information list of the current image block to integer pixel precision, and convert the vertical component of the bi-predicted motion vector value to integer pixel precision.
In some embodiments, when all motion vector values in the first candidate motion information list of the current image block are converted into integer pixel precision, the video codec device may obtain vertical components of all motion vector values in the first candidate motion information list and convert the vertical components of all motion vector values into integer pixel precision.
In one embodiment, when the video encoding and decoding apparatus converts the vertical component of the motion vector value into integer pixel precision, a conversion coefficient s may be determined according to the storage precision of the motion vector value, and the vertical component of the motion vector prediction value may be converted into integer pixel precision using a second preset conversion rule and the conversion coefficient s. The manner for converting the vertical component of the motion vector predictor into the integer pixel precision is as described above, and is not described herein again.
In one embodiment, when converting the vertical component of the motion vector predictor into integer pixel precision by using a second preset conversion rule and the conversion coefficient s, the video encoding and decoding device may determine whether the vertical component is greater than or equal to 0, if the vertical component is determined to be greater than or equal to 0, may shift a difference between the conversion coefficient s and 1 by 1 to the left to obtain a fourth shift value, shift a sum of the fourth shift value and the vertical component by s to the right to obtain a fifth shift value, and shift the fifth shift value by s to the left to obtain the integer pixel precision of the vertical component. In some embodiments, when the vertical component is greater than or equal to 0, the second preset conversion rule is as described above and is not described herein again.
In other embodiments, when the vertical component is greater than or equal to 0, the second preset conversion rule includes but is not limited to the above conversion rule, and may be other rules, and only the vertical component needs to be converted into an entire pixel, for example, the specific implementation is as described above, and details are not described here again.
In an embodiment, if the video encoding and decoding device determines that the vertical component is less than 0, the video encoding and decoding device may shift the difference between the fourth shift value and the vertical component by s bits to the right to obtain a sixth shift value, and shift the sixth shift value by s bits to the left and take the opposite number to obtain the integer pixel precision of the vertical component. In some embodiments, when the vertical component is less than 0, the second predetermined conversion rule is as described above and is not described herein again.
In this embodiment of the present specification, the video encoding and decoding device may obtain a first candidate motion information list of a current image block, obtain a vertical component of a motion vector value in the first candidate motion information list of the current image block, and convert the vertical component of the motion vector value into integer pixel precision, so as to perform video encoding or decoding according to the motion vector value converted from the vertical component into the integer pixel precision. By the implementation mode, the bandwidth utilization rate is improved to a certain extent, the coding or decoding operation is simplified, and the coding or decoding efficiency is improved.
Referring to fig. 8, fig. 8 is a schematic structural diagram of a video encoding and decoding apparatus provided in an embodiment of the present disclosure, specifically, the video encoding and decoding apparatus is disposed on the video encoding and decoding device, and the apparatus includes: an acquisition module 801 and a conversion module 802;
the obtaining module 801 is configured to obtain a first candidate motion information list of a current image block, where the first candidate motion information list includes predicted motion information, and the predicted motion information includes a motion vector value;
the conversion module 802 is configured to convert the precision of the motion vector value.
Further, when the conversion module 802 converts the precision of the motion vector value, it is specifically configured to:
and converting the precision of the motion vector value according to the size of the current image block.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
acquiring the size of the current image block;
and when a call instruction of a motion vector value in the first candidate motion information list is received, converting the precision of the motion vector value according to the size of the current image block.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, the converting module is specifically configured to:
judging whether the size of the current image block meets a first condition or not;
and if so, converting the motion vector value of the double prediction in the first candidate motion information list of the current image block into integer pixel precision.
Further, the conversion module 802 is further configured to:
and if the current image block is judged not to meet the first condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
Further, the first condition includes:
the current image block has a bi-predictive motion vector, and the size of the current image block satisfies a first preset range threshold.
Further, the meeting of the first preset range threshold includes: the size of the current image block is greater than or equal to 64 pixels.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, the converting module is specifically configured to:
judging whether the size of the current image block meets a second condition or not;
and if so, converting the motion vector value of at least one direction of double prediction in the first candidate motion information list of the current image block into integer pixel precision.
Further, the conversion module 802 is further configured to:
and if the current image block is judged not to meet the second condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
Further, the second condition includes:
at least two bi-predictive motion vectors exist in the current image block, and the size of the current image block meets a second preset range threshold.
Further, the meeting of the second preset range threshold includes:
the size of the current image block is less than 64 pixels; or,
the size of the current image block is greater than 16 pixels and less than 64 pixels.
Further, the motion vector value comprises a horizontal component and a vertical component; when the conversion module 802 converts the precision of the motion vector value, it is specifically configured to:
acquiring a horizontal component and a vertical component of a motion vector value in a first candidate motion information list of the current image block;
and converting the horizontal component and the vertical component of the motion vector value into integer pixel precision.
Further, when the conversion module 802 converts the horizontal component and the vertical component of the motion vector value into the integer pixel precision, it is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
converting the horizontal component of the motion vector predicted value into integer pixel precision by using a first preset conversion rule and the conversion coefficient s; and the number of the first and second groups,
and converting the vertical component of the motion vector predicted value into the integer pixel precision by using a second preset conversion rule and the conversion coefficient s.
Further, the motion vector value comprises a horizontal component; when the conversion module 802 converts the precision of the motion vector value, it is specifically configured to:
acquiring a horizontal component of a motion vector value in a first candidate motion information list of the current image block;
the horizontal component of the motion vector value is converted to integer pixel precision.
Further, when the conversion module 802 converts the horizontal component of the motion vector value into integer pixel precision, it is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the horizontal component of the motion vector predicted value into the integer pixel precision by using a first preset conversion rule and the conversion coefficient s.
Further, the motion vector value comprises a vertical component; when the conversion module 802 converts the precision of the motion vector value, it is specifically configured to:
acquiring a vertical component of a motion vector value in a first candidate motion information list of the current image block;
converting a vertical component of the motion vector value to integer pixel precision.
Further, when the conversion module 802 converts the vertical component of the motion vector value into integer pixel precision, it is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the vertical component of the motion vector predicted value into the integer pixel precision by utilizing a second preset conversion rule and the conversion coefficient s.
Further, when the conversion module 802 converts the horizontal component of the motion vector value into the integer pixel precision by using the first preset conversion rule and the conversion coefficient s, it is specifically configured to:
if the horizontal component is greater than or equal to 0, left-shifting the difference between the conversion coefficient s and 1 by 1 bit to obtain a first shift value;
right shifting the sum of the first shift value and the horizontal component by s to obtain a second shift value;
and shifting the second shift value by s bits to the left to obtain the integer pixel precision of the horizontal component.
Further, the horizontal component is MV1x, the integer-pixel precision of the horizontal component is MV2x, and the first preset transformation rule includes:
if MV1x > =0, MV2x = ((MV 1x + (1 < < (s-1))) > > s) < < s.
Further, the conversion module 802 is further configured to:
if the horizontal component is less than 0, right shifting the difference between the first shift value and the horizontal component by s bits to obtain a third shift value;
and shifting the third shift value by s bit to the left and taking the opposite number to obtain the integral pixel precision of the horizontal component.
Further, the horizontal component is MV1x, the integer pixel precision of the horizontal component is MV2x, and the first preset transformation rule includes:
if MV1x <0, MV2x = - ((-MV 1x + (1 < (s-1))) > > s) < < s.
Further, when the conversion module 802 converts the vertical component of the motion vector value into the integer pixel precision by using a second preset conversion rule and the conversion coefficient s, it is specifically configured to:
if the vertical component is greater than or equal to 0, shifting the difference between the conversion coefficient s and 1 by 1 bit to the left to obtain a fourth shift value;
right shifting the sum of the fourth shift value and the vertical component by s to obtain a fifth shift value;
and shifting the fifth shift value by s bit to the left to obtain the integral pixel precision of the vertical component.
Further, the vertical component is MV1y, the integer pixel precision of the vertical component is MV2y, and the second preset transformation rule includes:
if MV1y > =0, MV2y = ((MV 1y + (1 < < (s-1))) > > s) < < s.
Further, the conversion module 802 is further configured to:
if the vertical component is less than 0, right shifting the difference between the fourth shift value and the vertical component by s to obtain a sixth shift value;
and shifting the sixth shift value by s bit to the left and taking an opposite number to obtain the integral pixel precision of the vertical component.
Further, the vertical component is MV1y, the integer pixel precision of the vertical component is MV2y, and the second preset transformation rule includes:
if MV1y <0, MV2y = - ((-MV 1y + (1 < (s-1))) > > s) < < s.
Further, when the obtaining module 801 obtains the first candidate motion information list of the current image block, it is specifically configured to:
determining a first candidate motion information list of the current image block according to a Merge mode; or,
and determining a first candidate motion information list of the current image block according to a triangle prediction mode.
Further, the current image block is one coding unit, CU.
Further, when the obtaining module 801 determines the first candidate motion information list of the current image block according to the Merge mode, the obtaining module is specifically configured to:
obtaining a spatial domain candidate list and a time domain candidate list of the Merge (Merge) mode;
determining a first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list.
Further, when the obtaining module 801 determines the first candidate motion information list of the current image block according to the triangle prediction mode, the obtaining module is specifically configured to:
dividing the coding unit CU to obtain two triangular prediction units PU;
obtaining current motion information lists of the two Prediction Units (PU);
and determining a first candidate motion information list of the current image block according to the current motion information lists of the two Prediction Units (PU).
Further, when the obtaining module 801 determines, according to the current motion information lists of the two prediction units PU, the first candidate motion information list of the current image block, specifically configured to:
detecting whether the current motion vector in the current motion information list is a one-way predicted value;
if the detection result is negative, converting the current motion vector into a motion vector of unidirectional prediction;
and determining a first candidate motion information list of the current image block according to the converted motion vector of the single prediction.
Further, when the obtaining module 801 obtains the first candidate motion information list of the current image block, it is specifically configured to:
determining a first candidate motion information list of the current image block according to a Merge mode; or,
and determining a first candidate motion information list of the current image block according to a triangle prediction mode.
Further, the current image block is one coding unit, CU.
Further, when the obtaining module 801 determines the first candidate motion information list of the current image block according to the Merge mode, the obtaining module is specifically configured to:
obtaining a spatial domain candidate list and a time domain candidate list of the Merge (Merge) mode;
determining a first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list.
Further, when the obtaining module 801 determines the first candidate motion information list of the current image block according to the triangle prediction mode, the obtaining module is specifically configured to:
dividing the coding unit CU to obtain two triangular prediction units PU;
obtaining current motion information lists of the two Prediction Units (PU);
and determining a first candidate motion information list of the current image block according to the current motion information lists of the two Prediction Units (PU).
Further, when the obtaining module 801 determines, according to the current motion information lists of the two prediction units PU, the first candidate motion information list of the current image block, specifically configured to:
detecting whether the current motion vector in the current motion information list is a unidirectional predicted value;
if the detection result is negative, converting the current motion vector into a motion vector of unidirectional prediction;
and determining a first candidate motion information list of the current image block according to the converted motion vector of the single prediction.
Further, after the conversion module 802 converts the precision of the motion vector value, it is further configured to:
and establishing a second candidate motion information list according to the motion vector value after the conversion precision.
Further, when the conversion module 802 converts the precision of the motion vector value, it is specifically configured to:
converting the precision of the motion vector value to integer pixel precision.
Further, when the conversion module 802 converts the precision of the motion vector value into integer pixel precision, it is specifically configured to:
converting all or part of the motion vector values to integer pixel precision.
Further, the converting module 802 is further configured to, before converting the precision of the motion vector value according to the size of the current image block:
and judging whether the size of the current image block meets a preset range.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and performing different precision conversion operations on the different types of motion vector values according to the size range of the current image block.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and when the size of the current image block meets a first condition, converting the bi-predictive motion vector into integer pixel precision.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, the converting module is specifically configured to:
and when the size of the current image block meets a first condition, converting a horizontal direction component and/or a vertical direction component of the bi-predictive motion vector into integer pixel precision.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, the converting module is specifically configured to:
and when the size of the current image block meets a first condition, converting the motion vector in one direction in the bi-prediction motion vector into integer pixel precision.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and when the size of the current image block does not meet the first condition, converting a unidirectional motion vector value and/or a bidirectional motion vector value in the motion vector values into integer pixel precision.
Further, when the conversion module 802 converts the unidirectional motion vector value in the motion vector values into integer pixel precision, it is specifically configured to:
the horizontal direction component and/or the vertical direction component of the unidirectional predictive motion vector is converted to integer pixel precision.
Further, when the conversion module 802 converts the unidirectional motion vector value in the motion vector values into integer pixel precision, it is specifically configured to:
and converting the motion vector of at least one direction in the bi-predictive motion vector into integer pixel precision.
Further, when the conversion module 802 converts the unidirectional motion vector value in the motion vector values into integer pixel precision, it is specifically configured to:
the horizontal direction component and/or the vertical direction component of the bi-predictive motion vector is converted to integer pixel accuracy.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, the converting module is specifically configured to:
and when the size of the current image block meets a first condition, converting the motion vector in one direction in the bi-prediction motion vector into integer pixel precision.
Further, when the converting module 802 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and when the size of the current image block does not meet the first condition, converting a unidirectional motion vector value and/or a bidirectional motion vector value in the motion vector values into integer pixel precision.
Further, when the conversion module 802 converts a unidirectional motion vector value in the motion vector values into integer pixel precision, it is specifically configured to:
the horizontal direction component and/or the vertical direction component of the unidirectional predictive motion vector is converted to integer pixel precision.
Further, when the conversion module 802 converts the unidirectional motion vector value in the motion vector values into integer pixel precision, it is specifically configured to:
and converting the motion vector of at least one direction in the bi-predictive motion vector into integer pixel precision.
Further, when the conversion module 802 converts the unidirectional motion vector value in the motion vector values into integer pixel precision, it is specifically configured to:
the horizontal direction component and/or the vertical direction component of the bi-predictive motion vector is converted to integer pixel accuracy.
Further, when the obtaining module 801 obtains the first candidate motion information list of the current image block, it is specifically configured to:
and obtaining a first candidate motion information list of the current image block according to a merge candidate list (merge candidate list), a triangle prediction merge candidate list (triangle prediction candidate list), or other inter-frame prediction candidate lists.
Further, when the obtaining module 801 obtains the first candidate motion information list of the current image block, the obtaining module is specifically configured to:
one uni-directional predicted MV of bi-directional MVs in the merge candidate list (merge candidate list) is directly selected.
Further, when the conversion module 801 converts the precision of the motion vector value, it is specifically configured to:
converting bi-directional motion vector values in the first candidate list directly to integer pixel precision;
wherein the direct conversion of bi-directional motion vector values to integer pixel precision is the direct conversion of two uni-directional MVs to integer pixels without splitting the bi-directional MVs.
Further, the first candidate list includes bi-directional motion vector values from a triangle prediction merge candidate list (triangle merge candidate list).
In this embodiment, an obtaining module in the video encoding and decoding apparatus may obtain a first candidate motion information list of a current image block, and a converting module may convert precision of the motion vector value, so as to perform video encoding or decoding according to the motion vector value after the precision is converted. By the implementation mode, the bandwidth utilization rate can be improved, the coding or decoding operation is simplified, and the coding or decoding efficiency is improved.
Referring to fig. 9, fig. 9 is a schematic structural diagram of a video encoding and decoding apparatus provided in an embodiment of the present disclosure, specifically, the video encoding and decoding apparatus includes: memory 901, processor 902, and data interface 903.
The memory 901 may include a volatile memory (volatile memory); memory 901 may also include non-volatile memory (non-volatile memory); the memory 901 may also comprise a combination of the above-mentioned kinds of memories. The processor 902 may be a Central Processing Unit (CPU). The processor 902 may further include a hardware video codec device. The hardware video codec device may be an application-specific integrated circuit (ASIC), a Programmable Logic Device (PLD), or a combination thereof. Specifically, the programmable logic device may be, for example, a Complex Programmable Logic Device (CPLD), a field-programmable gate array (FPGA), or any combination thereof.
Further, the memory 901 is used for storing program instructions, and when the program instructions are executed, the processor 902 can call the program instructions stored in the memory 901 for executing the following steps:
acquiring a first candidate motion information list of a current image block, wherein the first candidate motion information list contains predicted motion information, and the predicted motion information comprises a motion vector value;
converting the precision of the motion vector values.
Further, when the processor 902 converts the precision of the motion vector value, it is specifically configured to:
and converting the precision of the motion vector value according to the size of the current image block.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
acquiring the size of the current image block;
and when a call instruction of the motion vector value in the first candidate motion information list is received, converting the precision of the motion vector value according to the size of the current image block.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
judging whether the size of the current image block meets a first condition or not;
and if so, converting the motion vector value of the double prediction in the first candidate motion information list of the current image block into integer pixel precision.
Further, the processor 902 is further configured to:
and if the current image block is judged not to meet the first condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
Further, the first condition includes:
the current image block has a bi-predictive motion vector, and the size of the current image block meets a first preset range threshold.
Further, the meeting of the first preset range threshold includes: the size of the current image block is greater than or equal to 64 pixels.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
judging whether the size of the current image block meets a second condition or not;
and if so, converting the motion vector value of at least one direction of double prediction in the first candidate motion information list of the current image block into integer pixel precision.
Further, the processor 902 is further configured to:
and if the current image block is judged not to meet the second condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
Further, the second condition includes:
at least two bi-predictive motion vectors exist in the current image block, and the size of the current image block meets a second preset range threshold.
Further, the meeting of the second preset range threshold includes:
the size of the current image block is less than 64 pixels; or,
the size of the current image block is greater than 16 pixels and less than 64 pixels.
Further, the motion vector value comprises a horizontal component and a vertical component; when the conversion module 802 converts the precision of the motion vector value, it is specifically configured to:
acquiring a horizontal component and a vertical component of a motion vector value in a first candidate motion information list of the current image block;
and converting the horizontal component and the vertical component of the motion vector value into integer pixel precision.
Further, when the processor 902 converts the horizontal component and the vertical component of the motion vector value into the integer pixel precision, it is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
converting the horizontal component of the motion vector predicted value into the whole pixel precision by using a first preset conversion rule and the conversion coefficient s; and (c) a second step of,
and converting the vertical component of the motion vector predicted value into the integer pixel precision by utilizing a second preset conversion rule and the conversion coefficient s.
Further, the motion vector value comprises a horizontal component; when the conversion module 802 converts the precision of the motion vector value, it is specifically configured to:
acquiring a horizontal component of a motion vector value in a first candidate motion information list of the current image block;
the horizontal component of the motion vector value is converted to integer pixel precision.
Further, when the processor 902 converts the horizontal component of the motion vector value into integer pixel precision, it is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the horizontal component of the motion vector predicted value into the integer pixel precision by using a first preset conversion rule and the conversion coefficient s.
Further, the motion vector value comprises a vertical component; when the conversion module 802 converts the precision of the motion vector value, it is specifically configured to:
acquiring a vertical component of a motion vector value in a first candidate motion information list of the current image block;
converting a vertical component of the motion vector value to integer pixel precision.
Further, when the processor 902 converts the vertical component of the motion vector value into integer pixel precision, it is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the vertical component of the motion vector predicted value into the integer pixel precision by utilizing a second preset conversion rule and the conversion coefficient s.
Further, when the processor 902 converts the horizontal component of the motion vector value into the integer pixel precision by using the first preset conversion rule and the conversion coefficient s, the processor is specifically configured to:
if the horizontal component is greater than or equal to 0, left-shifting the difference between the conversion coefficient s and 1 by 1 bit to obtain a first shift value;
right shifting the sum of the first shift value and the horizontal component by s bit to obtain a second shift value;
and shifting the second shift value by s bits to the left to obtain the integer pixel precision of the horizontal component.
Further, the horizontal component is MV1x, the integer pixel precision of the horizontal component is MV2x, and the first preset transformation rule includes:
if MV1x > =0, MV2x = ((MV 1x + (1 < < (s-1))) > > s) < < s.
Further, the processor 902 is further configured to:
if the horizontal component is less than 0, right shifting the difference between the first shift value and the horizontal component by s bits to obtain a third shift value;
and shifting the third shift value by s bit to the left and taking the opposite number to obtain the integral pixel precision of the horizontal component.
Further, the horizontal component is MV1x, the integer-pixel precision of the horizontal component is MV2x, and the first preset transformation rule includes:
if MV1x <0, MV2x = - ((-MV 1x + (1 < (s-1))) > > s) < < s.
Further, when the processor 902 converts the vertical component of the motion vector value into the integer pixel precision by using a second preset conversion rule and the conversion coefficient s, the method is specifically configured to:
if the vertical component is greater than or equal to 0, shifting the difference between the conversion coefficient s and 1 by 1 bit to the left to obtain a fourth shift value;
right shifting the sum of the fourth shift value and the vertical component by s to obtain a fifth shift value;
and shifting the fifth shift value by s bit to the left to obtain the integral pixel precision of the vertical component.
Further, the vertical component is MV1y, the integer pixel precision of the vertical component is MV2y, and the second preset transformation rule includes:
if MV1y > =0, MV2y = ((MV 1y + (1 < < (s-1))) > > s) < < s.
Further, the processor 902 is further configured to:
if the vertical component is less than 0, right shifting the difference between the fourth shift value and the vertical component by s to obtain a sixth shift value;
and shifting the sixth shift value by s bit to the left and taking an opposite number to obtain the integral pixel precision of the vertical component.
Further, the vertical component is MV1y, the integer pixel precision of the vertical component is MV2y, and the second preset transformation rule includes:
if MV1y <0, MV2y = - ((-MV 1y + (1 < (s-1))) > > s) < < s.
Further, when the processor 902 obtains the first candidate motion information list of the current image block, it is specifically configured to:
determining a first candidate motion information list of the current image block according to a Merge mode; or,
and determining a first candidate motion information list of the current image block according to a triangle prediction mode.
Further, the current image block is one coding unit, CU.
Further, when the processor 902 determines the first candidate motion information list of the current image block according to the Merge mode, it is specifically configured to:
obtaining a spatial domain candidate list and a temporal domain candidate list of the Merge (Merge) mode;
determining a first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list.
Further, when the processor 902 determines the first candidate motion information list of the current image block according to the triangle prediction mode, it is specifically configured to:
dividing the coding unit CU to obtain two triangular prediction units PU;
obtaining current motion information lists of the two Prediction Units (PU);
and determining a first candidate motion information list of the current image block according to the current motion information lists of the two Prediction Units (PU).
Further, when determining the first candidate motion information list of the current image block according to the current motion information lists of the two prediction units PU, the processor 902 is specifically configured to:
detecting whether the current motion vector in the current motion information list is a unidirectional predicted value;
if the detection result is negative, converting the current motion vector into a motion vector of unidirectional prediction;
and determining a first candidate motion information list of the current image block according to the converted motion vector of the single prediction.
Further, when the processor 902 obtains the first candidate motion information list of the current image block, it is specifically configured to:
determining a first candidate motion information list of the current image block according to a Merge mode; or,
and determining a first candidate motion information list of the current image block according to a triangle prediction mode.
Further, the current image block is one coding unit, CU.
Further, when the processor 902 determines the first candidate motion information list of the current image block according to the Merge mode, the processor is specifically configured to:
obtaining a spatial domain candidate list and a temporal domain candidate list of the Merge (Merge) mode;
determining a first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list.
Further, when the processor 902 determines the first candidate motion information list of the current image block according to the triangle prediction mode, it is specifically configured to:
dividing the coding unit CU to obtain two triangular prediction units PU;
obtaining current motion information lists of the two Prediction Units (PU);
and determining a first candidate motion information list of the current image block according to the current motion information lists of the two Prediction Units (PU).
Further, when determining the first candidate motion information list of the current image block according to the current motion information lists of the two prediction units PU, the processor 902 is specifically configured to:
detecting whether the current motion vector in the current motion information list is a one-way predicted value;
if the detection result is negative, converting the current motion vector into a motion vector predicted in a one-way mode;
and determining a first candidate motion information list of the current image block according to the converted motion vector of the single prediction.
Further, after converting the precision of the motion vector value, the processor 902 is further configured to:
and establishing a second candidate motion information list according to the motion vector value after the conversion precision.
Further, when the processor 902 converts the precision of the motion vector value, it is specifically configured to:
converting the precision of the motion vector value to integer pixel precision.
Further, when the processor 902 converts the precision of the motion vector value into integer pixel precision, it is specifically configured to:
converting all or part of the motion vector values to integer pixel precision.
Further, the processor 902, before converting the precision of the motion vector value according to the size of the current image block, is further configured to:
and judging whether the size of the current image block meets a preset range or not.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and performing different precision conversion operations on the different types of motion vector values according to the size range of the current image block.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and when the size of the current image block meets a first condition, converting the bi-predictive motion vector into integer pixel precision.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and when the size of the current image block meets a first condition, converting a horizontal direction component and/or a vertical direction component of the bi-predictive motion vector into integer pixel precision.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, the method is specifically configured to:
and when the size of the current image block meets a first condition, converting the motion vector in one direction in the bi-prediction motion vector into integer pixel precision.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and when the size of the current image block does not meet a first condition, converting a unidirectional motion vector value and/or a bidirectional motion vector value in the motion vector values into integer pixel precision.
Further, when the processor 902 converts a unidirectional motion vector value in the motion vector values to integer pixel precision, it is specifically configured to:
the horizontal direction component and/or the vertical direction component of the unidirectional prediction motion vector is converted into integer pixel precision.
Further, when the processor 902 converts a unidirectional motion vector value in the motion vector values to integer pixel precision, it is specifically configured to:
and converting the motion vector of at least one direction in the bi-prediction motion vector into integer pixel precision.
Further, the processor 902, when converting a unidirectional motion vector value in the motion vector values to integer pixel precision, is specifically configured to:
the horizontal direction component and/or the vertical direction component of the bi-predictive motion vector is converted to integer pixel precision.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and when the size of the current image block meets a first condition, converting the motion vector in one direction in the bi-prediction motion vector into integer pixel precision.
Further, when the processor 902 converts the precision of the motion vector value according to the size of the current image block, it is specifically configured to:
and when the size of the current image block does not meet the first condition, converting a unidirectional motion vector value and/or a bidirectional motion vector value in the motion vector values into integer pixel precision.
Further, the processor 902, when converting a unidirectional motion vector value in the motion vector values to integer pixel precision, is specifically configured to:
the horizontal direction component and/or the vertical direction component of the unidirectional predictive motion vector is converted to integer pixel precision.
Further, the processor 902, when converting a unidirectional motion vector value in the motion vector values to integer pixel precision, is specifically configured to:
and converting the motion vector of at least one direction in the bi-predictive motion vector into integer pixel precision.
Further, when the processor 902 converts a unidirectional motion vector value in the motion vector values to integer pixel precision, it is specifically configured to:
the horizontal direction component and/or the vertical direction component of the bi-predictive motion vector is converted to integer pixel accuracy.
Further, when the processor 902 obtains the first candidate motion information list of the current image block, it is specifically configured to:
and obtaining a first candidate motion information list of the current image block according to a merge candidate list (merge candidate list), a triangle prediction merge candidate list (triangle prediction merge list), or other inter-prediction candidate lists.
Further, when the processor 902 obtains the first candidate motion information list of the current image block, it is specifically configured to:
one uni-directional predicted MV of bi-directional MVs in the merge candidate list (merge candidate list) is directly selected.
Further, when the processor 902 converts the precision of the motion vector value, it is specifically configured to:
directly converting the bi-directional motion vector values in the first candidate list to integer pixel precision;
wherein the direct conversion of bi-directional motion vector values to integer pixel precision is the direct conversion of two uni-directional MVs to integer pixels without splitting the bi-directional MVs.
Further, the first candidate list includes bi-directional motion vector values from a triangle prediction merge candidate list (triangle merge candidate list).
In this embodiment, the video encoding and decoding device may obtain a candidate motion information list of a current image block, and convert the precision of the motion vector value, so as to perform video encoding or decoding according to the motion vector value after the conversion precision. By the implementation mode, the bandwidth utilization rate can be improved, the coding or decoding operation is simplified, and the coding or decoding efficiency is improved.
In an embodiment of the present specification, a schematic diagram of MV scaling technology is provided. The MV scaling technique is used in the process of obtaining temporal candidate MVPs, which obtain MVs of co-located PUs in neighboring coded pictures of the current CU. Specifically, as shown in fig. 12, where curr _ pic represents the current frame, curr _ ref represents the reference frame of the current frame, col _ pic represents the co-located frame where the co-located CU of the current CU is located, col _ ref represents the reference frame of the co-located frame, and MV (colMV, solid arrow pointing from col _ pic to col _ ref) of the co-located CU points to a block that may be in col _ ref, so that the current CU wants to obtain MV of the co-located CU, and needs to scale this MV to the position of a dotted line, that is, see MV after scaling, and add this MV as an MVP to the candidate list, where the reference frame of this MVP is curr _ ref and MV is a dotted line head (curMV), the scaling formula is as follows:
curMV = (td/tb) × (colMV). In an embodiment of the present specification, a computer-readable storage medium is further provided, where the computer-readable storage medium stores a computer program, and the computer program is executed by a processor to implement the video encoding or decoding method described in fig. 3, fig. 4, fig. 5, fig. 6, or fig. 7 in the embodiment of the present specification, and also implement the video encoding and decoding device in the embodiment corresponding to the embodiment described in fig. 8 in the embodiment of the present specification, which is not described herein again.
The computer readable storage medium may be an internal storage unit of the device according to any of the preceding embodiments, for example, a hard disk or a memory of the device. The computer readable storage medium may also be an external storage device of the device, such as a plug-in hard disk, a Smart Media Card (SMC), a Secure Digital (SD) Card, a Flash memory Card (Flash Card), etc. provided on the device. Further, the computer-readable storage medium may also include both an internal storage unit and an external storage device of the apparatus. The computer-readable storage medium is used for storing the computer program and other programs and data required by the apparatus. The computer readable storage medium may also be used to temporarily store data that has been output or is to be output.
It will be understood by those skilled in the art that all or part of the processes of the methods of the embodiments described above may be implemented by a computer program, which may be stored in a computer readable storage medium and executed by a computer to implement the processes of the embodiments of the methods described above. The storage medium may be a magnetic disk, an optical disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), or the like.
It should be understood that the above disclosure is only illustrative of some embodiments of the present disclosure, and that the scope of the present disclosure is not limited thereto.

Claims (130)

1. A video encoding or decoding method, comprising:
acquiring a first candidate motion information list of a current image block, wherein the first candidate motion information list contains predicted motion information, and the predicted motion information comprises a motion vector value;
converting the precision of the motion vector value;
wherein said converting the precision of said motion vector values comprises:
converting the precision of the motion vector value according to the size of the current image block;
the converting the precision of the motion vector value according to the size of the current image block includes:
if the size of the current image block meets a first condition, converting a bi-predictive motion vector value in a first candidate motion information list of the current image block into integer pixel precision;
and if the current image block does not meet the first condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
2. The method according to claim 1, wherein said converting the precision of the motion vector values according to the size of the current image block comprises:
acquiring the size of the current image block;
and when a call instruction of the motion vector value in the first candidate motion information list is received, converting the precision of the motion vector value according to the size of the current image block.
3. The method of claim 1, wherein the first condition comprises:
the current image block has a bi-predictive motion vector, and the size of the current image block meets a first preset range threshold.
4. The method of claim 3, wherein the meeting of the first preset range threshold comprises: the size of the current image block is greater than or equal to 64 pixels.
5. The method according to claim 1, wherein said converting the precision of the motion vector values according to the size of the current image block comprises:
judging whether the size of the current image block meets a second condition or not;
if yes, converting the motion vector value of at least one direction of double prediction in the first candidate motion information list of the current image block into integer pixel precision.
6. The method of claim 5, further comprising:
and if the current image block is judged not to meet the second condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
7. The method of claim 6, wherein the second condition comprises:
at least two bi-predictive motion vectors exist in the current image block, and the size of the current image block meets a second preset range threshold.
8. The method of claim 7, wherein the meeting of the second predetermined range threshold comprises:
the size of the current image block is less than 64 pixels; or,
the size of the current image block is greater than 16 pixels and less than 64 pixels.
9. The method of claim 1, wherein the motion vector values comprise a horizontal component and a vertical component; the converting the precision of the motion vector values comprises:
acquiring a horizontal component and a vertical component of a motion vector value in a first candidate motion information list of the current image block;
and converting the horizontal component and the vertical component of the motion vector value into integer pixel precision.
10. The method of claim 9, wherein converting the horizontal component and the vertical component of the motion vector value to integer pixel precision comprises:
determining a conversion coefficient s according to the storage precision of the motion vector value;
converting the horizontal component of the motion vector value into the integer pixel precision by using a first preset conversion rule and the conversion coefficient s; and (c) a second step of,
and converting the vertical component of the motion vector value into the integer pixel precision by utilizing a second preset conversion rule and the conversion coefficient s.
11. The method of claim 1, wherein the motion vector values comprise a horizontal component; the converting the precision of the motion vector values comprises:
acquiring a horizontal component of a motion vector value in a first candidate motion information list of the current image block;
the horizontal component of the motion vector value is converted to integer pixel precision.
12. The method of claim 11, wherein converting the horizontal component of the motion vector value to integer pixel precision comprises:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the horizontal component of the motion vector value into the integer pixel precision by using a first preset conversion rule and the conversion coefficient s.
13. The method of claim 1, wherein the motion vector values comprise a vertical component; the converting the precision of the motion vector values comprises:
acquiring a vertical component of a motion vector value in a first candidate motion information list of the current image block;
the vertical component of the motion vector value is converted to integer pixel precision.
14. The method of claim 13, wherein converting the vertical component of the motion vector value to integer pixel precision comprises:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the vertical component of the motion vector value into the integer pixel precision by utilizing a second preset conversion rule and the conversion coefficient s.
15. The method according to claim 10 or 12, wherein said converting the horizontal component of the motion vector value to integer pixel precision using a first preset conversion rule and the conversion coefficient s comprises:
if the horizontal component is greater than or equal to 0, left-shifting the difference between the conversion coefficient s and 1 by 1 bit to obtain a first shift value;
right shifting the sum of the first shift value and the horizontal component by s to obtain a second shift value;
and shifting the second shift value by s bit to the left to obtain the integral pixel precision of the horizontal component.
16. The method according to claim 15, wherein the horizontal component is MV1x, the integer pixel precision of the horizontal component is MV2x, and the first predetermined transformation rule comprises:
if MV1x > =0, MV2x = ((MV 1x + (1 < < (s-1))) > > s) < < s.
17. The method of claim 15, further comprising:
if the horizontal component is less than 0, right shifting the difference between the first shift value and the horizontal component by s bits to obtain a third shift value;
and shifting the third shift value by s bits to the left and taking the inverse number to obtain the integral pixel precision of the horizontal component.
18. The method of claim 17, wherein the horizontal component is MV1x, the integer pixel precision of the horizontal component is MV2x, and the first predetermined transformation rule comprises:
if MV1x <0, MV2x = - ((-MV 1x + (1 < (s-1))) > > s) < < s.
19. The method according to claim 10 or 14, wherein said converting the vertical component of the motion vector value to integer pixel precision using a second preset conversion rule and the conversion coefficient s comprises:
if the vertical component is greater than or equal to 0, shifting the difference between the conversion coefficient s and 1 by 1 bit to the left to obtain a fourth shift value;
right shifting the sum of the fourth shift value and the vertical component by s to obtain a fifth shift value;
and shifting the fifth shift value by s bit to the left to obtain the integral pixel precision of the vertical component.
20. The method of claim 19, wherein the vertical component is MV1y, the integer pixel precision of the vertical component is MV2y, and the second predetermined transformation rule comprises:
if MV1y > =0, MV2y = ((MV 1y + (1 < < (s-1))) > > s) < < s.
21. The method of claim 19, further comprising:
if the vertical component is less than 0, right shifting the difference between the fourth shift value and the vertical component by s to obtain a sixth shift value;
and shifting the sixth shift value by s bits to the left and taking an inverse number to obtain the integral pixel precision of the vertical component.
22. The method of claim 21, wherein the vertical component is MV1y, the integer pixel precision of the vertical component is MV2y, and the second predetermined transformation rule comprises:
if MV1y <0, MV2y = - ((-MV 1y + (1 < (s-1))) > > s) < < s.
23. The method according to claim 1, wherein said obtaining a first candidate motion information list of the current image block comprises:
determining a first candidate motion information list of the current image block according to a Merge mode; or,
and determining a first candidate motion information list of the current image block according to a triangle prediction mode.
24. The method of claim 23, wherein the current block is one Coding Unit (CU).
25. The method of claim 24, wherein the determining the first candidate motion information list of the current image block according to the Merge mode comprises:
acquiring a space domain candidate list and a time domain candidate list of the Merge mode;
determining a first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list.
26. The method as claimed in claim 24, wherein the determining the first candidate motion information list of the current image block according to the triangle prediction mode comprises:
dividing the coding unit CU to obtain two triangular prediction units PU;
obtaining current motion information lists of the two Prediction Units (PU);
and determining a first candidate motion information list of the current image block according to the current motion information lists of the two Prediction Units (PU).
27. The method according to claim 26, wherein said determining a first candidate motion information list for the current image block according to the current motion information lists of the two Prediction Units (PUs) comprises:
detecting whether the current motion vector in the current motion information list is a unidirectional predicted value;
if the detection result is negative, converting the current motion vector into a motion vector of unidirectional prediction;
and determining a first candidate motion information list of the current image block according to the converted motion vector of the single prediction.
28. The method according to claim 1, wherein said converting the precision of the motion vector values further comprises, after converting the precision of the motion vector values:
and establishing a second candidate motion information list according to the motion vector value after the conversion precision.
29. The method of claim 1, wherein said converting the precision of the motion vector values comprises:
converting the precision of the motion vector value to integer pixel precision.
30. The method of claim 29, wherein converting the precision of the motion vector value to integer pixel precision comprises:
converting all or part of the motion vector values to integer pixel precision.
31. The method according to claim 1, wherein said converting the precision of the motion vector values according to the size of the current image block further comprises:
and judging whether the size of the current image block meets a preset range.
32. The method according to claim 1, wherein said converting the precision of the motion vector values according to the size of the current image block comprises:
and performing different precision conversion operations on the different types of motion vector values according to the size range of the current image block.
33. The method according to claim 1, wherein said converting the precision of the motion vector values according to the size of the current image block comprises:
and when the size of the current image block meets a first condition, converting the bi-predictive motion vector into integer pixel precision.
34. The method according to claim 1, wherein said converting the precision of the motion vector values according to the size of the current image block comprises:
and when the size of the current image block meets a first condition, converting a horizontal direction component and/or a vertical direction component of the bi-predictive motion vector into integer pixel precision.
35. The method according to claim 1, wherein said converting the precision of the motion vector values according to the size of the current image block comprises:
and when the size of the current image block meets a first condition, converting the motion vector in one direction in the bi-prediction motion vector into integer pixel precision.
36. The method according to claim 1, wherein said converting the precision of the motion vector values according to the size of the current image block comprises:
and when the size of the current image block does not meet the first condition, converting a unidirectional motion vector value and/or a bidirectional motion vector value in the motion vector values into integer pixel precision.
37. The method of claim 36, wherein converting the one-way motion vector values of the motion vector values to integer pixel precision comprises:
the horizontal direction component and/or the vertical direction component of the unidirectional prediction motion vector is converted into integer pixel precision.
38. The method of claim 36, wherein converting bidirectional motion vector values of the motion vector values to integer pixel precision comprises:
and converting the motion vector of at least one direction in the bi-predictive motion vector into integer pixel precision.
39. The method of claim 36, wherein converting bidirectional motion vector values of the motion vector values to integer pixel precision comprises:
the horizontal direction component and/or the vertical direction component of the bi-predictive motion vector is converted to integer pixel accuracy.
40. The method according to claim 1, wherein said obtaining a first candidate motion information list of the current image block comprises:
and obtaining a first candidate motion information list of the current image block according to a merge candidate list (merge candidate list), a triangle prediction merge candidate list (triangle prediction candidate list), or other inter-frame prediction candidate lists.
41. The method as claimed in claim 40, wherein the obtaining the first candidate motion information list of the current image block comprises:
one uni-directional predicted MV of bi-directional MVs in the merge candidate list (merge candidate list) is directly selected.
42. The method of claim 1, wherein said converting the precision of the motion vector values comprises:
directly converting the bi-directional motion vector values in the first candidate motion information list to integer pixel precision;
wherein the direct conversion of bi-directional motion vector values to integer pixel precision is the direct conversion of two uni-directional MVs to integer pixels without splitting the bi-directional MVs.
43. The method of claim 42, wherein the first candidate motion information list comprises bi-directional motion vector values from a triangle prediction merge candidate list (triangle merge candidate list).
44. A video encoding and decoding apparatus, comprising:
an obtaining module, configured to obtain a first candidate motion information list of a current image block, where the first candidate motion information list includes predicted motion information, and the predicted motion information includes a motion vector value;
a conversion module for converting the precision of the motion vector value;
wherein, when the conversion module converts the precision of the motion vector value, it is specifically configured to:
converting the precision of the motion vector value according to the size of the current image block;
the conversion module is specifically configured to, when converting the precision of the motion vector value according to the size of the current image block:
if the size of the current image block meets a first condition, converting a bi-predictive motion vector value in a first candidate motion information list of the current image block into integer pixel precision;
and if the current image block does not meet the first condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
45. The apparatus as claimed in claim 44, wherein the converting module is configured to, when converting the precision of the motion vector value according to the size of the current image block, specifically:
acquiring the size of the current image block;
and when a call instruction of the motion vector value in the first candidate motion information list is received, converting the precision of the motion vector value according to the size of the current image block.
46. The apparatus of claim 44, wherein the first condition comprises:
the current image block has a bi-predictive motion vector, and the size of the current image block meets a first preset range threshold.
47. The apparatus of claim 46, wherein said meeting a first predetermined range threshold comprises: the size of the current image block is greater than or equal to 64 pixels.
48. The apparatus as claimed in claim 44, wherein the converting module is configured to, when converting the precision of the motion vector value according to the size of the current image block, specifically:
judging whether the size of the current image block meets a second condition or not;
and if so, converting the motion vector value of at least one direction of double prediction in the first candidate motion information list of the current image block into integer pixel precision.
49. The apparatus of claim 48, wherein the conversion module is further configured to:
and if the current image block is judged not to meet the second condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
50. The apparatus of claim 49, wherein the second condition comprises:
at least two bi-predictive motion vectors exist in the current image block, and the size of the current image block meets a second preset range threshold.
51. The apparatus of claim 50, wherein the meeting of the second preset range threshold comprises:
the size of the current image block is less than 64 pixels; or,
the size of the current image block is greater than 16 pixels and less than 64 pixels.
52. The apparatus according to claim 44, wherein the motion vector values comprise a horizontal component and a vertical component; when the conversion module converts the precision of the motion vector value, the conversion module is specifically configured to:
acquiring a horizontal component and a vertical component of a motion vector value in a first candidate motion information list of the current image block;
and converting the horizontal component and the vertical component of the motion vector value into integer pixel precision.
53. The apparatus according to claim 52, wherein the conversion module, when converting the horizontal component and the vertical component of the motion vector value to integer pixel precision, is configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
converting the horizontal component of the motion vector value into the integer pixel precision by using a first preset conversion rule and the conversion coefficient s; and (c) a second step of,
and converting the vertical component of the motion vector value into the integer pixel precision by utilizing a second preset conversion rule and the conversion coefficient s.
54. The apparatus according to claim 44, wherein the motion vector values comprise a horizontal component; when the conversion module converts the precision of the motion vector value, the conversion module is specifically configured to:
acquiring a horizontal component of a motion vector value in a first candidate motion information list of the current image block;
the horizontal component of the motion vector value is converted to integer pixel precision.
55. The apparatus according to claim 54, wherein said conversion module, when converting the horizontal component of the motion vector value to integer pixel precision, is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the horizontal component of the motion vector value into the integer pixel precision by using a first preset conversion rule and the conversion coefficient s.
56. The apparatus according to claim 44, wherein the motion vector values comprise a vertical component; when the conversion module converts the precision of the motion vector value, the conversion module is specifically configured to:
acquiring a vertical component of a motion vector value in a first candidate motion information list of the current image block;
the vertical component of the motion vector value is converted to integer pixel precision.
57. The apparatus according to claim 56, wherein said conversion module, when converting the vertical component of the motion vector value to integer pixel precision, is configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the vertical component of the motion vector value into the integer pixel precision by utilizing a second preset conversion rule and the conversion coefficient s.
58. The apparatus according to claim 53 or 55, wherein the conversion module is configured to, when converting the horizontal component of the motion vector value into integer pixel precision by using a first preset conversion rule and the conversion coefficient s:
if the horizontal component is greater than or equal to 0, left-shifting the difference between the conversion coefficient s and 1 by 1 bit to obtain a first shift value;
right shifting the sum of the first shift value and the horizontal component by s bit to obtain a second shift value;
and shifting the second shift value by s bit to the left to obtain the integral pixel precision of the horizontal component.
59. The apparatus of claim 58, wherein the horizontal component is MV1x, the integer pixel precision of the horizontal component is MV2x, and the first predetermined transformation rule comprises:
if MV1x > =0, MV2x = ((MV 1x + (1 < < (s-1))) > > s) < < s.
60. The apparatus of claim 58, wherein the conversion module is further configured to:
if the horizontal component is less than 0, right shifting the difference between the first shift value and the horizontal component by s bits to obtain a third shift value;
and shifting the third shift value by s bits to the left and taking the inverse number to obtain the integral pixel precision of the horizontal component.
61. The apparatus of claim 60, wherein the horizontal component is MV1x, the integer-pixel precision of the horizontal component is MV2x, and wherein the first predetermined transformation rule comprises:
if MV1x <0, MV2x = - ((-MV 1x + (1 < < (s-1))) > > s) < < s.
62. The apparatus according to claim 53 or 57, wherein the conversion module is configured to, when converting the vertical component of the motion vector value to integer pixel precision using a second predetermined conversion rule and the conversion coefficient s, in particular:
if the vertical component is greater than or equal to 0, shifting the difference between the conversion coefficient s and 1 by 1 bit to the left to obtain a fourth shift value;
right shifting the sum of the fourth shift value and the vertical component by s to obtain a fifth shift value;
and shifting the fifth shift value by s bit to the left to obtain the integral pixel precision of the vertical component.
63. The apparatus of claim 62, wherein the vertical component is MV1y, the integer pixel precision of the vertical component is MV2y, and the second predetermined transformation rule comprises:
if MV1y > =0, MV2y = ((MV 1y + (1 < < (s-1))) > > s) < < s.
64. The apparatus of claim 62, wherein the conversion module is further configured to:
if the vertical component is less than 0, right shifting the difference between the fourth shift value and the vertical component by s to obtain a sixth shift value;
and shifting the sixth shift value by s bit to the left and taking an opposite number to obtain the integral pixel precision of the vertical component.
65. The apparatus of claim 64, wherein the vertical component is MV1y, the integer pixel precision of the vertical component is MV2y, and the second predetermined transformation rule comprises:
if MV1y <0, MV2y = - ((-MV 1y + (1 < < (s-1))) > > s) < < s.
66. The apparatus according to claim 44, wherein the obtaining module, when obtaining the first candidate motion information list of the current image block, is specifically configured to:
determining a first candidate motion information list of the current image block according to a Merge mode; or,
and determining a first candidate motion information list of the current image block according to a triangle prediction mode.
67. The apparatus of claim 66, wherein the current block is one Coding Unit (CU).
68. <xnotran> 67 , , Merge , : </xnotran>
Acquiring a space domain candidate list and a time domain candidate list of the Merge mode;
determining a first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list.
69. The apparatus as claimed in claim 67, wherein the obtaining module, when determining the first candidate motion information list of the current image block according to the triangle prediction mode, is specifically configured to:
dividing the coding unit CU to obtain two triangular prediction units PU;
obtaining current motion information lists of the two Prediction Units (PU);
and determining a first candidate motion information list of the current image block according to the current motion information lists of the two Prediction Units (PU).
70. The apparatus of claim 69, wherein the obtaining module, when determining the first candidate motion information list of the current image block according to the current motion information lists of the two Prediction Units (PUs), is specifically configured to:
detecting whether the current motion vector in the current motion information list is a one-way predicted value;
if the detection result is negative, converting the current motion vector into a motion vector of unidirectional prediction;
and determining a first candidate motion information list of the current image block according to the converted motion vector of the single prediction.
71. The apparatus of claim 44, wherein said conversion module, after converting the precision of the motion vector value, is further configured to:
and establishing a second candidate motion information list according to the motion vector value after the conversion precision.
72. The apparatus according to claim 44, wherein said conversion module, when converting the precision of the motion vector values, is specifically configured to:
converting the precision of the motion vector value to integer pixel precision.
73. The apparatus according to claim 72, wherein said conversion module, when converting the precision of the motion vector values to integer pixel precision, is specifically configured to:
converting all or part of the motion vector values to integer pixel precision.
74. The apparatus as claimed in claim 44, wherein said converting module is further configured to, before converting the precision of the motion vector values according to the size of the current image block:
and judging whether the size of the current image block meets a preset range.
75. The apparatus as claimed in claim 44, wherein the converting module is configured to, when converting the precision of the motion vector value according to the size of the current image block, specifically:
and performing different precision conversion operations on the different types of motion vector values according to the size range of the current image block.
76. The apparatus as claimed in claim 44, wherein the converting module is configured to, when converting the precision of the motion vector value according to the size of the current image block, specifically:
and when the size of the current image block meets a first condition, converting the bi-predictive motion vector into integer pixel precision.
77. The apparatus according to claim 44, wherein said converting module is configured to, when converting the precision of the motion vector values according to the size of the current image block, specifically:
and when the size of the current image block meets a first condition, converting a horizontal direction component and/or a vertical direction component of the bi-predictive motion vector into integer pixel precision.
78. The apparatus as claimed in claim 44, wherein the converting module is configured to, when converting the precision of the motion vector value according to the size of the current image block, specifically:
and when the size of the current image block meets a first condition, converting the motion vector in one direction in the bi-prediction motion vector into integer pixel precision.
79. The apparatus as claimed in claim 44, wherein the converting module is configured to, when converting the precision of the motion vector value according to the size of the current image block, specifically:
and when the size of the current image block does not meet a first condition, converting a unidirectional motion vector value and/or a bidirectional motion vector value in the motion vector values into integer pixel precision.
80. The apparatus according to claim 79, wherein said conversion module, when converting one-way motion vector values of the motion vector values to integer pixel precision, is specifically configured to:
the horizontal direction component and/or the vertical direction component of the unidirectional predictive motion vector is converted to integer pixel precision.
81. The apparatus according to claim 79, wherein said conversion module, when converting one-way motion vector values of the motion vector values to integer pixel precision, is specifically configured to:
and converting the motion vector of at least one direction in the bi-predictive motion vector into integer pixel precision.
82. The apparatus according to claim 79, wherein said conversion module, when converting one-way motion vector values of the motion vector values to integer pixel precision, is specifically configured to:
the horizontal direction component and/or the vertical direction component of the bi-predictive motion vector is converted to integer pixel accuracy.
83. The apparatus according to claim 44, wherein the obtaining module, when obtaining the first candidate motion information list of the current image block, is specifically configured to:
and obtaining a first candidate motion information list of the current image block according to a merge candidate list (merge candidate list), a triangle prediction merge candidate list (triangle prediction candidate list), or other inter-frame prediction candidate lists.
84. The apparatus according to claim 83, wherein the obtaining module, when obtaining the first candidate motion information list of the current image block, is specifically configured to:
one uni-directional predicted MV of bi-directional MVs in the merge candidate list (merge candidate list) is directly selected.
85. The apparatus according to claim 44, wherein the converting module is configured to, when converting the precision of the motion vector value:
directly converting the bi-directional motion vector values in the first candidate motion information list to integer pixel precision;
wherein the direct conversion of bi-directional motion vector values to integer pixel precision is the direct conversion of two uni-directional MVs to integer pixels without splitting the bi-directional MVs.
86. The apparatus of claim 85, wherein the first candidate motion information list comprises bi-directional motion vector values from a triangle prediction merge candidate list (triangle merge candidate list).
87. A video coding and decoding device, comprising: a memory and a processor;
the memory to store program instructions;
the processor, configured to invoke the program instructions, and when the program instructions are executed, configured to:
acquiring a first candidate motion information list of a current image block, wherein the first candidate motion information list contains predicted motion information, and the predicted motion information comprises a motion vector value;
converting the precision of the motion vector value;
wherein the processor, when converting the precision of the motion vector values, is specifically configured to:
converting the precision of the motion vector value according to the size of the current image block;
the processor is specifically configured to, when converting the precision of the motion vector value according to the size of the current image block:
if the size of the current image block meets a first condition, converting a bi-predictive motion vector value in a first candidate motion information list of the current image block into integer pixel precision;
and if the current image block does not meet the first condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
88. The device according to claim 87, wherein said processor, when translating the precision of said motion vector values according to the size of said current image block, is configured to:
acquiring the size of the current image block;
and when a call instruction of the motion vector value in the first candidate motion information list is received, converting the precision of the motion vector value according to the size of the current image block.
89. The apparatus according to claim 87, wherein the first condition comprises:
the current image block has a bi-predictive motion vector, and the size of the current image block satisfies a first preset range threshold.
90. The apparatus of claim 89 wherein said meeting a first predetermined range threshold comprises: the size of the current image block is greater than or equal to 64 pixels.
91. The device according to claim 87, wherein said processor, when translating said precision of motion vector values according to a size of said current image block, is configured to:
judging whether the size of the current image block meets a second condition or not;
and if so, converting the motion vector value of at least one direction of double prediction in the first candidate motion information list of the current image block into integer pixel precision.
92. The device of claim 91, wherein the processor is further configured to:
and if the current image block is judged not to meet the second condition, converting all motion vector values in a first candidate motion information list of the current image block into integer pixel precision.
93. The apparatus according to claim 92, wherein the second condition comprises:
at least two bi-predictive motion vectors exist in the current image block, and the size of the current image block meets a second preset range threshold.
94. The apparatus of claim 93, wherein said meeting a second predetermined range threshold comprises:
the size of the current image block is less than 64 pixels; or,
the size of the current image block is greater than 16 pixels and less than 64 pixels.
95. The device according to claim 87, wherein the motion vector values comprise a horizontal component and a vertical component; the processor, when converting the precision of the motion vector value, is specifically configured to:
acquiring a horizontal component and a vertical component of a motion vector value in a first candidate motion information list of the current image block;
and converting the horizontal component and the vertical component of the motion vector value into integer pixel precision.
96. The device according to claim 95, wherein said processor, when translating the horizontal and vertical components of said motion vector values to integer pixel precision, is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
converting the horizontal component of the motion vector value into integer pixel precision by using a first preset conversion rule and the conversion coefficient s; and the number of the first and second groups,
and converting the vertical component of the motion vector value into the integer pixel precision by utilizing a second preset conversion rule and the conversion coefficient s.
97. The device according to claim 87, wherein said motion vector values comprise a horizontal component; the processor, when converting the precision of the motion vector value, is specifically configured to:
acquiring a horizontal component of a motion vector value in a first candidate motion information list of the current image block;
the horizontal component of the motion vector value is converted to integer pixel precision.
98. The device according to claim 97, wherein said processor, when translating the horizontal component of said motion vector values to integer pixel precision, is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the horizontal component of the motion vector value into the integer pixel precision by using a first preset conversion rule and the conversion coefficient s.
99. The device according to claim 87, wherein said motion vector values comprise a vertical component; when the processor converts the precision of the motion vector value, it is specifically configured to:
acquiring a vertical component of a motion vector value in a first candidate motion information list of the current image block;
converting a vertical component of the motion vector value to integer pixel precision.
100. The device according to claim 99, wherein said processor, when translating a vertical component of said motion vector value to integer pixel precision, is specifically configured to:
determining a conversion coefficient s according to the storage precision of the motion vector value;
and converting the vertical component of the motion vector value into integer pixel precision by using a second preset conversion rule and the conversion coefficient s.
101. The device according to claim 96 or 98, wherein said processor, when translating the horizontal component of the motion vector value to integer pixel precision using a first preset translation rule and said translation coefficient s, is specifically configured to:
if the horizontal component is greater than or equal to 0, left-shifting the difference between the conversion coefficient s and 1 by 1 bit to obtain a first shift value;
right shifting the sum of the first shift value and the horizontal component by s to obtain a second shift value;
and shifting the second shift value by s bit to the left to obtain the integral pixel precision of the horizontal component.
102. The apparatus of claim 101, wherein the horizontal component is MV1x, the integer pixel precision of the horizontal component is MV2x, and wherein the first predetermined transformation rule comprises:
if MV1x > =0, MV2x = ((MV 1x + (1 < < (s-1))) > > s) < < s.
103. The device of claim 101, wherein the processor is further configured to:
if the horizontal component is less than 0, right shifting the difference between the first shift value and the horizontal component by s bits to obtain a third shift value;
and shifting the third shift value by s bits to the left and taking the inverse number to obtain the integral pixel precision of the horizontal component.
104. The apparatus of claim 103, wherein the horizontal component is MV1x, wherein the integer-pel precision of the horizontal component is MV2x, and wherein the first predetermined transformation rule comprises:
if MV1x <0, MV2x = - ((-MV 1x + (1 < < (s-1))) > > s) < < s.
105. The device according to claim 96 or 100, wherein said processor is configured to, when translating the vertical component of the motion vector values to integer pixel precision using a second predetermined translation rule and said translation coefficient s:
if the vertical component is greater than or equal to 0, shifting the difference between the conversion coefficient s and 1 by 1 bit to the left to obtain a fourth shift value;
shifting the sum of the fourth shift value and the vertical component by s bit to the right to obtain a fifth shift value;
and shifting the fifth shift value by s bit to the left to obtain the integral pixel precision of the vertical component.
106. The apparatus of claim 105, wherein the vertical component is MV1y, wherein the integer pixel precision of the vertical component is MV2y, and wherein the second predetermined transformation rule comprises:
if MV1y > =0, MV2y = ((MV 1y + (1 < < (s-1))) > > s) < < s.
107. The device of claim 105, wherein the processor is further configured to:
if the vertical component is less than 0, right shifting the difference between the fourth shift value and the vertical component by s to obtain a sixth shift value;
and shifting the sixth shift value by s bits to the left and taking an inverse number to obtain the integral pixel precision of the vertical component.
108. The apparatus of claim 107, wherein the vertical component is MV1y, wherein the integer pixel precision of the vertical component is MV2y, and wherein the second predetermined transformation rule comprises:
if MV1y <0, MV2y = - ((-MV 1y + (1 < (s-1))) > > s) < < s.
109. The device according to claim 87, wherein said processor, when obtaining the first candidate motion information list of the current image block, is specifically configured to:
determining a first candidate motion information list of the current image block according to a Merge mode; or,
and determining a first candidate motion information list of the current image block according to a triangle prediction mode.
110. The apparatus of claim 109, wherein the current block is one Coding Unit (CU).
111. The device according to claim 110, wherein when determining the first candidate motion information list of the current image block according to the Merge mode, the processor is specifically configured to:
acquiring a space domain candidate list and a time domain candidate list of the Merge mode;
determining a first candidate motion information list of the coding unit CU according to the spatial candidate list and the temporal candidate list.
112. The device according to claim 110, wherein when determining the first candidate motion information list for the current image block according to the triangle prediction mode, the processor is specifically configured to:
dividing the coding unit CU to obtain two triangular prediction units PU;
obtaining current motion information lists of the two Prediction Units (PU);
and determining a first candidate motion information list of the current image block according to the current motion information lists of the two Prediction Units (PU).
113. The device of claim 112, wherein the processor, when determining the first candidate motion information list for the current image block according to the current motion information lists of the two prediction units PU, is specifically configured to:
detecting whether the current motion vector in the current motion information list is a unidirectional predicted value;
if the detection result is negative, converting the current motion vector into a motion vector of unidirectional prediction;
and determining a first candidate motion information list of the current image block according to the converted motion vector of the single prediction.
114. The device according to claim 87, wherein said processor, after converting the precision of said motion vector values, is further configured to:
and establishing a second candidate motion information list according to the motion vector value after the conversion precision.
115. The device according to claim 87, wherein said processor, when converting the precision of said motion vector values, is configured to:
converting the precision of the motion vector value to integer pixel precision.
116. The device according to claim 115, wherein said processor, when converting the precision of said motion vector values to integer pixel precision, is specifically configured to:
converting all or part of the motion vector values to integer pixel precision.
117. The device according to claim 87, wherein said processor, prior to converting the precision of said motion vector values according to the size of said current image block, is further configured to:
and judging whether the size of the current image block meets a preset range.
118. The device according to claim 87, wherein said processor, when translating said precision of motion vector values according to a size of said current image block, is configured to:
and performing different precision conversion operations on the different types of motion vector values according to the size range of the current image block.
119. The device according to claim 87, wherein said processor, when translating said precision of motion vector values according to a size of said current image block, is configured to:
and when the size of the current image block meets a first condition, converting the bi-predictive motion vector into integer pixel precision.
120. The device according to claim 87, wherein said processor, when translating said precision of motion vector values according to a size of said current image block, is configured to:
and when the size of the current image block meets a first condition, converting a horizontal direction component and/or a vertical direction component of the bi-predictive motion vector into integer pixel precision.
121. The device according to claim 87, wherein said processor, when translating said precision of motion vector values according to a size of said current image block, is configured to:
and when the size of the current image block meets a first condition, converting the motion vector in one direction in the bi-prediction motion vector into integer pixel precision.
122. The device according to claim 87, wherein said processor, when translating the precision of said motion vector values according to the size of said current image block, is configured to:
and when the size of the current image block does not meet the first condition, converting a unidirectional motion vector value and/or a bidirectional motion vector value in the motion vector values into integer pixel precision.
123. The device according to claim 122, wherein said processor, when converting one-way motion vector values of the motion vector values to integer pixel precision, is specifically configured to:
the horizontal direction component and/or the vertical direction component of the unidirectional predictive motion vector is converted to integer pixel precision.
124. The device according to claim 122, wherein said processor, when converting one of said motion vector values to integer pixel precision, is configured to:
and converting the motion vector of at least one direction in the bi-predictive motion vector into integer pixel precision.
125. The device according to claim 122, wherein said processor, when converting one-way motion vector values of the motion vector values to integer pixel precision, is specifically configured to:
the horizontal direction component and/or the vertical direction component of the bi-predictive motion vector is converted to integer pixel accuracy.
126. The device according to claim 87, wherein said processor, when obtaining the first candidate motion information list of the current image block, is specifically configured to:
and obtaining a first candidate motion information list of the current image block according to a merge candidate list (merge candidate list), a triangle prediction merge candidate list (triangle prediction merge list), or other inter-prediction candidate lists.
127. The device according to claim 126, wherein said processor, when obtaining the first candidate motion information list for the current image block, is specifically configured to:
one uni-directional predicted MV of bi-directional MVs in the merge candidate list (merge candidate list) is directly selected.
128. The device according to claim 87, wherein said processor, when converting the precision of said motion vector values, is configured to:
directly converting the bi-directional motion vector values in the first candidate motion information list to integer pixel precision;
wherein the direct conversion of bi-directional motion vector values to integer pixel precision is the direct conversion of two uni-directional MVs to integer pixels without splitting the bi-directional MVs.
129. The apparatus of claim 128, wherein the first candidate motion information list comprises bi-directional motion vector values from a triangle prediction merge candidate list (triangle merge candidate list).
130. A computer-readable storage medium, in which a computer program is stored which, when being executed by a processor, carries out the method according to any one of claims 1 to 43.
CN201980004958.9A 2019-03-13 2019-03-13 Video coding or decoding method, device, equipment and storage medium Active CN111670578B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/078054 WO2020181542A1 (en) 2019-03-13 2019-03-13 Method, device and apparatus for video coding or decoding, and storage medium

Publications (2)

Publication Number Publication Date
CN111670578A CN111670578A (en) 2020-09-15
CN111670578B true CN111670578B (en) 2023-02-21

Family

ID=72382521

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980004958.9A Active CN111670578B (en) 2019-03-13 2019-03-13 Video coding or decoding method, device, equipment and storage medium

Country Status (2)

Country Link
CN (1) CN111670578B (en)
WO (1) WO2020181542A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11212523B2 (en) * 2020-01-12 2021-12-28 Mediatek Inc. Video processing methods and apparatuses of merge number signaling in video coding systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104335586A (en) * 2012-04-11 2015-02-04 高通股份有限公司 Motion vector rounding
CN109076236A (en) * 2016-05-13 2018-12-21 高通股份有限公司 The merging candidate item of motion-vector prediction for video coding
CN109218733A (en) * 2017-06-30 2019-01-15 华为技术有限公司 A kind of method and relevant device of determining motion vector predictor
CN109417629A (en) * 2016-07-12 2019-03-01 韩国电子通信研究院 Image coding/decoding method and recording medium for this method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011121942A1 (en) * 2010-03-31 2011-10-06 株式会社Jvcケンウッド Video encoding apparatus, video encoding method, video encoding program, video decoding apparatus, video decoding method, and video decoding program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104335586A (en) * 2012-04-11 2015-02-04 高通股份有限公司 Motion vector rounding
CN109076236A (en) * 2016-05-13 2018-12-21 高通股份有限公司 The merging candidate item of motion-vector prediction for video coding
CN109417629A (en) * 2016-07-12 2019-03-01 韩国电子通信研究院 Image coding/decoding method and recording medium for this method
CN109218733A (en) * 2017-06-30 2019-01-15 华为技术有限公司 A kind of method and relevant device of determining motion vector predictor

Also Published As

Publication number Publication date
WO2020181542A1 (en) 2020-09-17
CN111670578A (en) 2020-09-15

Similar Documents

Publication Publication Date Title
TWI750494B (en) Constraints for usage of updated motion information
CN113196772B (en) Interaction between intra-block copy mode and sub-block based motion vector prediction mode
CN113039802B (en) Use of history-based affine parameters
US9369731B2 (en) Method and apparatus for estimating motion vector using plurality of motion vector predictors, encoder, decoder, and decoding method
CN111886870B (en) Motion vector correction search using integer pixel resolution
KR100619377B1 (en) Motion estimation method and device
EP3932068A1 (en) Constraints on decoder-side motion vector refinement
CN111010569A (en) Improvement of temporal gradient calculation in BIO
CN111567047B (en) Memory access window for sub-prediction block motion vector derivation
TWI709332B (en) Motion prediction based on updated motion vectors
CN111279701B (en) Video processing method and device
CN117880493A (en) Construction method for airspace motion candidate list
CN113439444A (en) Multiple HMVP for affine
CN113302917A (en) Improved method for local illumination compensation
CN112840645A (en) Method and apparatus for combining multiple predictors for block prediction in a video coding system
CN113228675A (en) Motion vector bit depth in video processing
CN113475075A (en) Shared Merge list based motion prediction
CN110809164A (en) MV precision in BIO
CN111670578B (en) Video coding or decoding method, device, equipment and storage medium
CN110557639B (en) Application of interleaved prediction
CN113273208A (en) Improvement of affine prediction mode
TWI846727B (en) Two-step inter prediction

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant