Method and apparatus for processing motion vector

Through adaptive motion vector offset processing, the problems of high motion vector encoding overhead and insufficient accuracy are solved, and more efficient image data compression and improved prediction accuracy are achieved.

CN114079789BActive Publication Date: 2025-10-24BEIJING SAMSUNG TELECOM R&D CENT +1
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202010852314.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-08-21
Publication Date
2025-10-24
Estimated Expiration
2040-08-21

AI Technical Summary

Technical Problem

In the prior art, when encoding motion vectors, the encoding overhead of the motion vector information is large, resulting in a reduced image data compression ratio and insufficient motion vector accuracy, which affects prediction accuracy.

Method used

Adaptive motion vector offset index and adaptive motion vector direction index are used to offset the motion vector to generate a better motion vector and improve the prediction accuracy.

Benefits of technology

By offsetting the motion vector processing, the number of bits for encoding the motion vector information is reduced, and the compression ratio and prediction accuracy of the image data are improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114079789B_ABST
    Figure CN114079789B_ABST
Patent Text Reader

Abstract

The present disclosure provides a method of performing processing on a motion vector of a coding unit and an electronic device performing the method, the method including receiving an adaptive motion vector difference index and an adaptive motion vector direction index of a current coding unit, determining an adaptive motion vector difference of the current coding unit based on the adaptive motion vector difference index of the current coding unit, determining an offset motion vector for offsetting a motion vector of the current coding unit based on the determined adaptive motion vector difference and the adaptive motion vector direction index of the current coding unit, and determining an offset motion vector of the current coding unit based on the determined offset motion vector and the motion vector of the current coding unit.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the technical field of video coding and decoding, and in particular to a method and device for processing motion vectors. Background Art

[0002] In image compression methods such as Moving Picture Experts Group (MPEG)-1, MPEG-2, MPEG-4, and H.264 / MPEG-4 Advanced Video Coding (AVC), a picture is divided into blocks to encode the image. Furthermore, the corresponding blocks are encoded using inter-frame prediction or intra-frame prediction. Then, the optimal encoding mode is selected based on the data size of the block to be encoded and the distortion of the original block, and the block is encoded.

[0003] In inter-frame prediction, motion estimation is used to eliminate temporal redundancy between consecutive pictures. Motion estimation coding is a method of encoding an image by using one or more reference pictures to estimate and compensate for the motion of the current picture in units of blocks.

[0004] In motion estimation coding, a predetermined estimation function is used to search for the block most similar to the current block within a predetermined search range of the reference picture. If the most similar block is found, only the residual between the current block and the most similar block in the reference picture is transmitted to improve the data compression ratio.

[0005] At this time, in order to decode the current block encoded by motion estimation, information about a motion vector is needed to indicate the positional difference between the current block and a similar block in a reference picture. Therefore, when encoding the current block, the encoded motion vector information must be inserted into the bitstream. In this process, if the motion vector information is encoded as is and inserted, the compression ratio of the image data is reduced due to increased overhead.

[0006] Inter-frame prediction uses the similarity between the current image and another image. A reference area similar to the current area of ​​the current image is detected from a reference image restored before the current image. The distance between the current area and the reference area with respect to coordinates is represented as a motion vector, and the difference between the pixel values ​​of the current area and the reference area is represented as residual data. Therefore, an index indicating a reference image, a motion vector, and residual data can be output by performing inter-frame prediction on the current area, rather than directly outputting image information of the current area. The term "image" can refer to a still image or a moving image of a video (i.e., the video itself).

[0007] In real-world scenarios, since the distance an object moves is not necessarily an integer multiple of a pixel, the accuracy of the motion vector needs to be improved to the sub-pixel level. In the previous generation AVS2 standard, the accuracy of the motion vector was 1 / 4 pixel.

[0008] Figure 1An interpolation example when the pixel precision is 1 / 4 is shown.

[0009] As shown in Figure 1 , pixels such as A -1,-1 , A 0,-1 are called integer pixels, and pixels between integer pixels (for example, b -1,-1 ) are called fractional pixels.

[0010] Adaptive Motion Vector Resolution, abbreviated as AMVR. In addition to 1 / 4, 1 / 2, 1, 2, and 4 pixel precisions are newly introduced in AVS3. At the encoding end, the five motion vector precisions are encoded, the optimal motion vector precision is selected through the rate-distortion optimization process, and the corresponding index is transmitted to the decoding end. The index corresponding to the five motion vector precisions is shown in Table 1.

[0011] Table 1 Motion vector precision index and motion vector precision

[0012]

[0013] Advanced Motion Information Expression, abbreviated as UMVE. When the coding unit is in skip mode or direct mode, this technology is to offset on the basis of the motion candidate that has been generated, so as to obtain a more optimal motion candidate. Figure 2A An example of UMVE motion candidate derivation according to an embodiment of the present disclosure is shown. For example Figure 2A , one motion candidate is taken as a starting point, and search is performed from four directions above, below, left, and right, with offsets of 1 / 4, 1 / 2, 1, 2, and 4 pixels, and there are two starting points (2 bases) Figure 2A , the reference image queue 0 on the left is used for the first starting point, Figure 2A , the reference image queue 1 on the right is used for the second starting point), four offset directions (4 directions), and five offsets (5 offsets), a total of 2*4*5=40 motion candidates are generated.

[0014] The prediction reference mode InterPredRefMode is the prediction reference mode used by the current prediction unit. If the value of InterPredRefMode is 0, the prediction reference mode is to use reference image queue 0 reference (‘PRED_List0’), and the number of prediction unit motion vectors is equal to 1; if the value of InterPredRefMode is 1, the prediction reference mode is to use reference image queue 1 reference (‘PRED_List1’), and the number of prediction unit motion vectors is equal to 1; if the value of InterPredRefMode is 2, the prediction reference mode is to use reference image double queue reference (‘PRED_List01’), and the number of prediction unit motion vectors is equal to 2.

[0015] Figure 2B An example method of partitioning an image is shown according to an embodiment of the present disclosure. As shown in the left part of FIG. 1, an image is partitioned into a series of maximum coding blocks (CTU0, CTU1), each of which is encoded in turn in the order of a raster scan within a slice. As shown in the right part of FIG. 1, the maximum coding blocks adopt a QT+BT+EQT basic block partitioning structure, QT partitions a maximum coding block into four sub-coding blocks, BT can partition a maximum coding block into two sub-coding blocks in left / right or top / bottom, and EQT contains two H-shaped partitioning manners in horizontal and vertical, which partitions a maximum coding block into four sub-coding blocks. Similarly, the QT+BT+EQT basic block partitioning structure can also be adopted for the sub-coding blocks to obtain lower-level coding blocks. The QT+BT+EQT basic block partitioning structure can be continued to be adopted for the lower-level coding blocks, and so on. Figure 2B An example method of partitioning an image is shown according to an embodiment of the present disclosure. As shown in the left part of FIG. 1, an image is partitioned into a series of maximum coding blocks (CTU0, CTU1), each of which is encoded in turn in the order of a raster scan within a slice. As shown in the right part of FIG. 1, the maximum coding blocks adopt a QT+BT+EQT basic block partitioning structure, QT partitions a maximum coding block into four sub-coding blocks, BT can partition a maximum coding block into two sub-coding blocks in left / right or top / bottom, and EQT contains two H-shaped partitioning manners in horizontal and vertical, which partitions a maximum coding block into four sub-coding blocks. Similarly, the QT+BT+EQT basic block partitioning structure can also be adopted for the sub-coding blocks to obtain lower-level coding blocks. The QT+BT+EQT basic block partitioning structure can be continued to be adopted for the lower-level coding blocks, and so on. Figure 2B An example method of partitioning an image is shown according to an embodiment of the present disclosure. As shown in the left part of FIG. 1, an image is partitioned into a series of maximum coding blocks (CTU0, CTU1), each of which is encoded in turn in the order of a raster scan within a slice. As shown in the right part of FIG. 1, the maximum coding blocks adopt a QT+BT+EQT basic block partitioning structure, QT partitions a maximum coding block into four sub-coding blocks, BT can partition a maximum coding block into two sub-coding blocks in left / right or top / bottom, and EQT contains two H-shaped partitioning manners in horizontal and vertical, which partitions a maximum coding block into four sub-coding blocks. Similarly, the QT+BT+EQT basic block partitioning structure can also be adopted for the sub-coding blocks to obtain lower-level coding blocks. The QT+BT+EQT basic block partitioning structure can be continued to be adopted for the lower-level coding blocks, and so on. SUMMARY

[0016] According to an aspect of the present disclosure, a method of performing processing on a motion vector of a coding unit by an electronic device is provided, including: receiving an adaptive motion vector offset index and an adaptive motion vector direction index of a current coding unit; determining an adaptive motion vector offset of the current coding unit based on the adaptive motion vector offset index of the current coding unit; determining an offset motion vector for offsetting the motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit; and determining an offset motion vector of the current coding unit based on the determined offset motion vector and the motion vector of the current coding unit.

[0017] According to another aspect of the present disclosure, an electronic device is provided, including: a memory configured to store computer executable instructions; and a processor configured to receive an adaptive motion vector offset index and an adaptive motion vector direction index of a current coding unit; determine an adaptive motion vector offset of the current coding unit based on the adaptive motion vector offset index of the current coding unit; determine an offset motion vector for offsetting the motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit; and determine an offset motion vector of the current coding unit based on the determined offset motion vector and the motion vector of the current coding unit. BRIEF DESCRIPTION OF DRAWINGS

[0018] In order to more clearly illustrate the technical solutions of the embodiments of the present disclosure, the drawings of the embodiments will be briefly introduced as follows. Obviously, the drawings in the following description are only related to some embodiments of the present disclosure and not limited to the present disclosure.

[0019] Figure 1An example of interpolation when the pixel precision is 1 / 4 is shown.

[0020] Figure 2A An example of UMVE motion candidate derivation is shown.

[0021] Figure 2B An example method of partitioning an image is shown.

[0022] Figure 3 A method performed by an electronic device is shown.

[0023] Figure 4 and Figure 5 An example of motion vector offset is shown.

[0024] Figure 6 A structure of an electronic device is shown. DETAILED DESCRIPTION

[0025] Before undertaking the detailed description below, it can be advantageous to set forth definitions of certain words and phrases that have been used, or will be used, throughout this patent document: The terms “include” and “comprise,” as well as derivatives thereof, mean inclusion without limitation; the term “or,” is inclusive, meaning and / or; the phrases “associated with” and “associated therewith,” as well as derivatives thereof, can mean to include, be included within, interconnect with, contain, be contained within, connect to or with, couple to or with, be communicable with, cooperate with, interleave, be proximate to, be bound to or with, have, have a property of, or the like; and the term “controller” means any device, system or part thereof that controls at least one operation, such a device can be implemented in hardware, firmware or software, or some combination of at least two of the same. It should be noted that the functionality associated with any particular controller can be centralized or distributed, whether locally or remotely.

[0026] Throughout this patent document, definitions are provided for certain words and phrases used herein. Those of ordinary skill in the art should understand that in many if not most instances, such definitions apply to prior as well as future uses of such defined words and phrases.

[0027] According to an aspect of the present disclosure, a method of performing processing on a motion vector of a coding unit is provided, including: receiving an adaptive motion vector offset index and an adaptive motion vector direction index of a current coding unit; determining an adaptive motion vector offset of the current coding unit based on the adaptive motion vector offset index of the current coding unit; determining an offset motion vector used to offset the motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit; and determining an offset motion vector of the current coding unit based on the determined offset motion vector and the motion vector of the current coding unit.

[0028] Optionally, when the adaptive motion vector precision of the current coding unit satisfies a predetermined condition and the image of the current coding unit is a predetermined image, receiving an enhanced adaptive motion vector precision flag of the current coding unit; when the enhanced adaptive motion vector precision flag is a predetermined value, determining to receive the adaptive motion vector offset index and the adaptive motion vector direction index of the current coding unit.

[0029] Optionally, the adaptive motion vector precision of the current coding unit satisfying the predetermined condition comprises that the adaptive motion vector precision of the current coding unit is an element in a set consisting of any one or any multiple of the following precisions: 1 / 2, 1, 2, 4.

[0030] Optionally, the image of the current coding unit being the predetermined image comprises that the image of the current coding unit is an element in a set consisting of any one or any multiple of the following images: P image, B image.

[0031] Optionally, the step of determining the adaptive motion vector offset based on the adaptive motion vector offset index of the current coding unit comprises one of the following: determining the adaptive motion vector offset of the current coding unit based on a mapping relationship between the adaptive motion vector offset index and the adaptive motion vector offset; determining the adaptive motion vector offset of the current coding unit based on both the adaptive motion vector offset index and the adaptive motion vector precision index of the current coding unit; and determining the adaptive motion vector offset of the current coding unit based on both the adaptive motion vector offset index and the adaptive motion vector direction index of the current coding unit.

[0032] Optionally, the step of determining the adaptive motion vector offset based on both the adaptive motion vector offset index and the adaptive motion vector precision index of the current coding unit comprises: determining the adaptive motion vector offset of the current coding unit based on a mapping relationship between the adaptive motion vector offset index, the adaptive motion vector precision index and the adaptive motion vector offset.

[0033] Optionally, the step of determining the adaptive motion vector offset based on both the adaptive motion vector offset index of the current coding unit and the adaptive motion vector direction index of the current coding unit comprises: determining the adaptive motion vector offset of the current coding unit based on a mapping relationship between the adaptive motion vector offset index, the adaptive motion vector direction index and the adaptive motion vector offset.

[0034] Optionally, the step of determining the offset motion vector for offsetting the motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit comprises: determining the offset motion vector of the current coding unit by a first manner, including: determining the offset motion vector of the current coding unit as a vector whose components in at most one of the first direction and the second direction, which are not parallel to each other, have values corresponding to the determined adaptive motion vector offset, and whose components in the remaining directions have zero values.

[0035] Optionally, the step of determining the offset motion vector for offsetting the motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit comprises: determining the offset motion vector of the current coding unit by a second manner, including: determining the offset motion vector of the current coding unit as a vector whose components in both of the first direction and the second direction, which are not parallel to each other, have values corresponding to the determined adaptive motion vector offset.

[0036] Optionally, the offset motion vector is determined by the first manner when the adaptive motion vector offset index is outside a predetermined range, and the offset motion vector is determined by the second manner when the adaptive motion vector offset index is within the predetermined range.

[0037] Optionally, the predetermined range is a range greater than a predetermined index value.

[0038] Optionally, the first direction is perpendicular to the second direction.

[0039] According to another aspect of the present disclosure, an electronic device is provided, including a memory configured to store computer executable instructions; and a processor configured to receive an adaptive motion vector offset index and an adaptive motion vector direction index of a current coding unit; determine an adaptive motion vector offset of the current coding unit based on the adaptive motion vector offset index of the current coding unit; determine an offset motion vector for offsetting a motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit; and determine an offset motion vector of the current coding unit based on the determined offset motion vector and the motion vector of the current coding unit.

[0040] In addition to 1 / 4, 1 / 2, 1, 2, 4 pixel precisions are newly introduced in AVS3, which can save the number of bits required to encode motion vector information, but may cause a decrease in prediction accuracy.

[0041] The present application proposes to offset the motion vector generated based on AMVR, so as to obtain a more optimal motion vector and improve the prediction accuracy.

[0042] Figure 3 A method performed by an electronic device according to an embodiment of the present disclosure is shown.

[0043] Reference Figure 3 In step 301, the electronic device receives an adaptive motion vector offset index and an adaptive motion vector direction index of a current coding unit.

[0044] The electronic device can receive the adaptive motion vector offset index and the adaptive motion vector direction index of the current coding unit in response to the electronic device entering an enhanced adaptive motion vector precision mode.

[0045] The current coding unit can be a data unit currently processed in multimedia content received by the electronic device. The multimedia data can be an image, a video, etc., but is not limited thereto. For example, the current coding unit can be a maximum coding block, a sub-coding block, a coding block of a lower level described in conjunction with FIG. 2, but is not limited thereto, and can be a coding block divided in any appropriate manner.

[0046] The condition for the electronic device to enter the enhanced adaptive motion vector precision mode can be that the electronic device receives an enhanced adaptive motion vector precision flag of the current coding unit when adaptive motion vector precision of the current coding unit satisfies a predetermined condition and an image of the current coding unit is a predetermined image. And the electronic device enters the enhanced adaptive motion vector precision mode when the enhanced adaptive motion vector precision flag is a predetermined value.

[0047] The enhanced adaptive motion vector precision flag of the current coding unit is used to indicate whether the enhanced adaptive motion vector precision mode is entered for the current coding unit. For example, the predetermined value can be "0" and "1", but is not limited thereto, and can be other fields, values and formats. For example, when the enhanced adaptive motion vector precision flag of the current coding unit is "0", it can indicate that the current coding unit does not enter the enhanced adaptive motion vector precision mode, and the electronic device determines the motion vector using the existing video coding technology in the related field; when the enhanced adaptive motion vector precision flag of the current coding unit is "1", it can indicate that the current coding unit enters the enhanced adaptive motion vector precision mode, and the electronic device performs the operation of "receiving the adaptive motion vector offset index and the adaptive motion vector direction index of the current coding unit" and Figure 3 other operations depicted.

[0048] The adaptive motion vector precision of the current coding unit satisfying the predetermined condition can include that the adaptive motion vector precision of the current coding unit is an element in a set consisting of any one or any multiple of the following precisions: 1 / 2, 1, 2, 4. This is because the precisions of 1 / 2, 1, 2, 4 are all lower than the precision of 1 / 4, and when the precisions of 1 / 2, 1, 2, 4 are adopted, the motion vector cannot reach certain sub-pixels shown in Figure 1 . For example, when the precisions are 1, 2, 4, the motion vector cannot reach any sub-pixel shown in Figure 1 . For example, it can be specified that the adaptive motion vector precision of the current coding unit satisfies the aforementioned predetermined condition when it is an element in the set {2, 4}. For example, it can be specified that the adaptive motion vector precision of the current coding unit satisfies the aforementioned predetermined condition only when it is 4.

[0049] The image of the current coding unit being a predetermined image can include that the image of the current coding unit is an element in a set consisting of any one or any multiple of the following images: P image, B image. For example, it can be specified that the image of the current coding unit is a predetermined image when it is an element in the set {P image, B image}, in which case, as long as the image of the current coding unit is any one of the P image and the B image, it is a predetermined image. For example, it can be specified that the image of the current coding unit is a predetermined image only when it is a P image.

[0050] The P and B pictures are decoding picture types. The decoding picture types are classified as: I picture, P picture, B picture. In an I picture, the coding process of all coding units uses intra prediction. For a P picture, on the basis of intra prediction, the coding units in the P picture can also optionally use inter prediction, each prediction unit uses at most one motion compensation prediction information, and only uses picture queue 0 reference. On the basis of the intra prediction and (optional) inter prediction used by the P picture, all coding units in the B picture can also use inter prediction, but each prediction unit can use at most two motion compensation prediction information, and can use double queue reference of the reference picture.

[0051] Alternatively or replaceably, the electronic device can ignore the enhanced adaptive motion vector precision flag of the current coding unit, regardless of whether it exists or regardless of its value, and perform the operation of "receiving the adaptive motion vector offset index and the adaptive motion vector direction index of the current coding unit" and Figure 3 Other operations are depicted.

[0052] The adaptive motion vector precision of the current coding unit can be obtained by the electronic device and components thereof, for example, the electronic device or its components can obtain the adaptive motion vector precision index of the current coding unit, and determine the adaptive motion vector precision of the current coding unit based on the adaptive motion vector precision index of the current coding unit.

[0053] Optionally, the adaptive motion vector offset index of the current coding unit refers to an index of the size of the offset on the basis of the motion vector generated based on AMVR.

[0054] Optionally, the adaptive motion vector precision index of the current coding unit refers to an index of the precision of the motion vector generated based on AMVR, used to determine the motion vector of the coding unit.

[0055] Optionally, the adaptive motion vector direction index of the current coding unit refers to an index of the direction of the offset motion vector on the basis of the motion vector generated based on AMVR.

[0056] Continuing to refer to Figure 3 At step 303, the electronic device determines the adaptive motion vector offset of the current coding unit based on the adaptive motion vector offset index of the current coding unit.

[0057] As an example, the electronic device can determine the adaptive motion vector offset of the current coding unit in the following three ways (way one, way two, and way three).

[0058] Way one:

[0059] The electronic device can determine the adaptive motion vector offset AmvrUmveOffset of the current coding unit based on the adaptive motion vector offset index AmvrUmveStepIdx of the current coding unit.

[0060] For example, the electronic device can obtain the adaptive motion vector offset AmvrUmveOffset according to the adaptive motion vector offset index AmvrUmveStepIdx by looking up a table (for example, Table 2 below) representing the correspondence between the adaptive motion vector offset index AmvrUmveStepIdx and the adaptive motion vector offset AmvrUmveOffset. However, this is merely an example, and the method by which the electronic device obtains the adaptive motion vector offset AmvrUmveOffset based on the adaptive motion vector offset index AmvrUmveStepIdx is not limited thereto.

[0061] AmvrUmveStepIdx AmvrUmveOffset 0 1 1 2 2 3 3 4 4 5

[0062] Table 2: Correspondence between AmvrUmveOffset and AmvrUmveStepIdx

[0063] In Table 2, AmvrUmveStepIdx is shown to have values 0-4, however, this is merely an example, and the value range of AmvrUmveStepIdx is not limited thereto, and can be any integer greater than or equal to 0. For example, the values of AmvrUmveStepIdx can be non-continuous integer values. In Table 2, AmvrUmveOffset is shown to have values 1-5, however, this is merely an example, and its values are not limited thereto, and can be other values. For example, the values of AmvrUmveOffset can be non-continuous integer values.

[0064] When the value of InterPredRefMode is 0, the electronic device can determine 1 AmvrUmveOffset according to Table 2, for example, AmvrUmveOffset0. When the value of InterPredRefMode is 1, the electronic device can determine 1 AmvrUmveOffset according to Table 2, for example, AmvrUmveOffset1. When the value of InterPredRefMode is 2, the electronic device can determine 2 AmvrUmveOffset according to Table 2, for example, AmvrUmveOffset0 and AmvrUmveOffset1.

[0065] Method two:

[0066] The electronic device can determine the adaptive motion vector offset AmvrUmveOffset of the current coding unit based on the adaptive motion vector offset index AmvrUmveStepIdx of the current coding unit and the adaptive motion vector precision index AmvrIndex of the current coding unit.

[0067] For example, the electronic device can obtain the adaptive motion vector offset AmvrUmveOffset according to the adaptive motion vector offset index AmvrUmveStepIdx by looking up a table (e.g., Table 3 below) representing the correspondence between the adaptive motion vector offset index AmvrUmveStepIdx, the adaptive motion vector precision index AmvrIndex, and the adaptive motion vector offset AmvrUmveOffset. However, this is merely an example, and the method by which the electronic device obtains the adaptive motion vector offset AmvrUmveOffset based on the adaptive motion vector offset index AmvrUmveStepIdx of the current coding unit and the adaptive motion vector precision index AmvrIndex of the current coding unit is not limited thereto.

[0068]

[0069] Table 3: Correspondence between AmvrUmveOffset and AmvrIndex and AmvrUmveStepIdx

[0070] In Table 3, AmvrUmveStepIdx is shown to have values 0~4, however, this is merely an example, and the range of values of AmvrUmveStepIdx is not limited thereto, and can be any integer greater than or equal to 0. For example, the values of AmvrUmveStepIdx can be non-continuous integer values. In Table 3, AmvrUmveOffset is shown to have values (2, 4, 8, 2, 4) or (1, 2, 4, 1, 2) or (1, 2, 3, 1, 2), however, this is merely an example, and the values thereof are not limited thereto, and can be other values. For example, the values of AmvrUmveOffset can be non-continuous integer values. In Table 3, AmvrIndex is shown to have values 2, 3, 4, however, this is merely an example, and the values of AmvrIndex can be other integers.

[0071] In Table 3, the set of AmvrUmveOffset values is different when the AmvrIndex values are different, however, this is merely an example, and the sets of AmvrUmveOffset values corresponding to different AmvrIndex values can all or partially be the same as each other.

[0072] When the value of InterPredRefMode is 0, the electronic device can determine one AmvrUmveOffset according to Table 3, for example, AmvrUmveOffset0. When the value of InterPredRefMode is 1, the electronic device can determine one AmvrUmveOffset according to Table 3, for example, AmvrUmveOffset1. When the value of InterPredRefMode is 2, the electronic device can determine two AmvrUmveOffset according to Table 3, for example, AmvrUmveOffset0 and AmvrUmveOffset1.

[0073] In the second way, more possible offsets can be obtained due to the increase of the variable AmvrIndex compared with the first way, so that more diversified offsets can be obtained, so that the offset motion vector can correspond to more sub-pixels.

[0074] The third way:

[0075] The electronic device can determine the adaptive motion vector offset AmvrUmveOffset of the current coding unit based on the adaptive motion vector offset index AmvrUmveStepIdx of the current coding unit and the adaptive motion vector direction index AmvrUmveDirIdx of the current coding unit.

[0076] For example, the electronic device can obtain the adaptive motion vector offset AmvrUmveOffset according to the adaptive motion vector offset index AmvrUmveStepIdx by looking up a table (for example, Table 4 below) representing the correspondence between the adaptive motion vector offset index AmvrUmveStepIdx, the adaptive motion vector direction index AmvrUmveDirIdx and the adaptive motion vector offset AmvrUmveOffset. However, this is only an example, and the method by which the electronic device obtains the adaptive motion vector offset AmvrUmveOffset based on the adaptive motion vector offset index AmvrUmveStepIdx of the current coding unit and the adaptive motion vector direction index AmvrUmveDirIdx of the current coding unit is not limited thereto.

[0077]

[0078] Table 4: Correspondence between AmvrUmveOffset, AmvrUmveDirIdx and AmvrUmveStepIdx

[0079] In Table 4, AmvrUmveStepIdx is shown to have values 0~4, however, this is merely an example, and the value range of AmvrUmveStepIdx is not limited thereto, and can be any integer greater than or equal to 0. For example, the value of AmvrUmveStepIdx can be a non-continuous integer value. In Table 4, AmvrUmveOffset is shown to have values (2, 4, 6, 2, 4) or (1, 2, 4, 6, 8) or (0, 0, 0, 0, 0), however, this is merely an example, and its value is not limited thereto, and can be other values. For example, the value of AmvrUmveOffset can be a non-continuous integer value. In Table 3, AmvrUmveDirIdx is shown to have values 1, 2, 3, 4, however, this is merely an example, and the value of AmvrUmveDirIdx can be other integers.

[0080] In Table 4, the set of AmvrUmveOffset values is different when the value of AmvrUmveDirIdx is different, however, this is merely an example, and the set of AmvrUmveOffset values corresponding to different values of AmvrUmveDirIdx can all or partially be the same as each other.

[0081] When the value of InterPredRefMode is 0, the electronic device can determine 1 AmvrUmveOffset according to Table 4, for example, AmvrUmveOffset0. When the value of InterPredRefMode is 1, the electronic device can determine 1 AmvrUmveOffset according to Table 4, for example, AmvrUmveOffset1. When the value of InterPredRefMode is 2, the electronic device can determine 2 AmvrUmveOffset according to Table 4, for example, AmvrUmveOffset0 and AmvrUmveOffset1.

[0082] In Mode Three, since the variable AmvrUmveDirIdx is added compared to Mode One, more possible offsets can be obtained, and thus more diversified offsets can be obtained, so that the offset motion vector can correspond to more sub-pixels.

[0083] Continuing to refer to Figure 3 In step 305, the electronic device can determine an offset motion vector for offsetting the motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit.

[0084] In the following, the motion vector of the current coding unit is denoted as mvBaseE0(mvBaseE0_x, mvBaseE0_y) and / or mvBaseE0(mvBaseE0_x, mvBaseE0_y). mvBaseE0_x is the component of mvBaseE0 in the x direction, and mvBaseE0_y is the component of mvBaseE0 in the y direction. mvBaseE1_x is the component of mvBaseE1 in the x direction, and mvBaseE1_y is the component of mvBaseE1 in the y direction.

[0085] The offset motion vector is denoted as mvOffSetE0(mvOffSetE0_x, mvOffSetE0_y) and / or mvOffSetE0(mvOffSetE0_x, mvOffSetE0_y). mvOffSetE0_x is the component of mvOffSetE0 in the x direction, and mvOffSetE0_y is the component of mvOffSetE0 in the y direction. mvOffSetE1_x is the component of mvOffSetE1 in the x direction, and mvOffSetE1_y is the component of mvOffSetE1 in the y direction.

[0086] The offset motion vector is denoted as mvOffSetE0(mvOffSetE0_x, mvOffSetE0_y) and / or mvOffSetE0(mvOffSetE0_x, mvOffSetE0_y). mvOffSetE0_x is the component of mvOffSetE0 in the x direction, and mvOffSetE0_y is the component of mvOffSetE0 in the y direction. mvOffSetE1_x is the component of mvOffSetE1 in the x direction, and mvOffSetE1_y is the component of mvOffSetE1 in the y direction.

[0087] wherein the x direction and the y direction can be two directions which are not parallel. Specifically, the x direction and the y direction can be directions which are perpendicular to each other. For example, the x direction can be a horizontal direction (0°), and the y direction can be a vertical direction (90°).

[0088] Figure 4 and Figure 5 An example of motion vector offset is shown according to an embodiment of the present disclosure. As shown in FIG. 2, mvE0 = mvBaseE0 + mvOffSetE0. Figure 4 and Figure 5 As shown in FIG. 2, mvE0 = mvBaseE0 + mvOffSetE0.

[0089] The electronic device can determine the offset motion vector in two ways (way A and way B).

[0090] Way A:

[0091] The following describes Mode A for the case (a1, a2, a3) where the value of InterPredRefMode is 0, 1, and 2, respectively.

[0092] (a1) InterPredRefMode = 0

[0093] In the case where the value of InterPredRefMode is 0, as described above, the number of motion vectors is equal to 1, and thus the motion vector is denoted as mvBaseE0(mvBaseE0_x, mvBaseE0_y). Also, the offset motion vector can be denoted as mvOffSetE0(mvOffSetE0_x, mvOffSetE0_y).

[0094] In this case, one of mvOffSetE0_x and mvOffSetE0_y can have a value corresponding to the adaptive motion vector offset (denoted as AmvrUmveOffset0 here) obtained by step 303, for example, AmvrUmveOffset0 or (-AmvrUmveOffset0), and the other can have a value of zero. Additionally or alternatively, both mvOffSetE0_x and mvOffSetE0_y can have a value of zero.

[0095] Code segment 1-1 shown below shows one example of deriving mvOffSetE0(mvOffSetE0_x, mvOffSetE0_y), but the present disclosure is not limited thereto.

[0096]

[0097] Code segment 1-1

[0098] Accordingly, the offset motion vector mvE0(mvE0_x, mvE0_y) can be derived by code segment 1-2 shown below.

[0099]

[0100] Code segment 1-2

[0101] (a2) InterPredRefMode = 1

[0102] In the case where the value of InterPredRefMode is 1, as described above, the number of motion vectors is equal to 1, and thus the motion vector is denoted as mvBaseE1(mvBaseE1_x, mvBaseE1_y). Also, the offset motion vector can be denoted as mvOffSetE1(mvOffSetE1_x, mvOffSetE1_y).

[0103] In this case, one of mvOffSetE1_x and mvOffSetE1_y can have a value corresponding to the adaptive motion vector offset (denoted here as AmvrUmveOffset1) obtained by step 303, for example, AmvrUmveOffset1 or (-AmvrUmveOffset1), and the other can have a zero value. Additionally or alternatively, both mvOffSetE1_x and mvOffSetE1_y can have zero values.

[0104] Code segment 2-1 shown below illustrates one example of deriving mvOffSetE1 (mvOffSetE1_x, mvOffSetE1_y), although the present disclosure is not limited thereto.

[0105]

[0106] Code segment 2-1

[0107] Accordingly, the offset motion vector mvE1 (mvE1_x, mvE1_y) can be derived by the following code segment 2-2.

[0108]

[0109] Code segment 2-2

[0110] (a3) InterPredRefMode = 2

[0111] In the case where the value of InterPredRefMode is 2, as previously described, the number of motion vectors is equal to 2, and thus the motion vectors are denoted as mvBaseE0 (mvBaseE0_x, mvBaseE0_y) and mvBaseE1 (mvBaseE1_x, mvBaseE1_y). Also, the offset motion vectors can be denoted as mvOffSetE0 (mvOffSetE0_x, mvOffSetE0_y) and mvOffSetE1 (mvOffSetE1_x, mvOffSetE1_y).

[0112] In this case, one of mvOffSetE0_x and mvOffSetE0_y can have a value corresponding to the adaptive motion vector offset (denoted here as AmvrUmveOffset0) obtained by step 303, for example, AmvrUmveOffset0 or (-AmvrUmveOffset0), and the other can have a zero value. Additionally or alternatively, both mvOffSetE0_x and mvOffSetE0_y can have zero values.

[0113] Also, one of mvOffSetE1_x and mvOffSetE1_y can have a value corresponding to the adaptive motion vector offset (denoted as AmvrUmveOffset1 here) obtained by step 303, for example, AmvrUmveOffset1 or (-AmvrUmveOffset1), and the other can have a value of zero. Additionally or alternatively, mvOffSetE1_x and mvOffSetE1_y can both have a value of zero.

[0114] Code segment 3-1 shown below illustrates one example of deriving mvOffSetE0 (mvOffSetE0_x, mvOffSetE0_y) and mvOffSetE1 (mvOffSetE1_x, mvOffSetE1_y), however the present disclosure is not limited thereto.

[0115]

[0116] Code segment 3-1

[0117] Correspondingly, the offset motion vectors mvE0 (mvE0_x, mvE0_y) and mvE1 (mvE1_x, mvE1_y) can be derived by code segment 3-2 shown below.

[0118]

[0119] Code segment 3-2

[0120] The above describes the method of offsetting the motion vector by way A. By way A, the motion vector can be offset in the x direction or the y direction to obtain a more optimal motion vector, thereby improving the prediction accuracy.

[0121] Way B:

[0122] The following describes way A for the case that the value of InterPredRefMode is 0, 1, 2 respectively (b1, b2, b3).

[0123] (b1) InterPredRefMode = 0

[0124] In the case that the value of InterPredRefMode is 0, as described above, the number of motion vectors is equal to 1, therefore, the motion vector is denoted as mvBaseE0 (mvBaseE0_x, mvBaseE0_y). Also, the offset motion vector can be denoted as mvOffSetE0 (mvOffSetE0_x, mvOffSetE0_y).

[0125] When AmvrUmveStepIdx is outside a predetermined range, for example, when AmvrUmveStepIdx is smaller than a predetermined index value a (a can be any value in the range of AmvrUmveStepIdx, and the predetermined range is a range greater than or equal to a), similarly to the case of (a1) described above, one of mvOffSetE0_x and mvOffSetE0_y can have a value corresponding to the adaptive motion vector offset (here, denoted as AmvrUmveOffset0) obtained by step 303, for example, AmvrUmveOffset0 or (-AmvrUmveOffset0), and the other can have a value of zero. Additionally or alternatively, mvOffSetE0_x and mvOffSetE0_y can both have a value of zero.

[0126] Code segment 4-1 shown below shows one example of deriving mvOffSetE0 (mvOffSetE0_x, mvOffSetE0_y), but the present disclosure is not limited thereto.

[0127]

[0128] Code segment 4-1

[0129] Accordingly, the offset motion vector mvE0 (mvE0_x, mvE0_y) can be derived by code segment 4-2 shown below.

[0130]

[0131]

[0132] Code segment 4-2

[0133] When AmvrUmveStepIdx is within a predetermined range, for example, when AmvrUmveStepIdx is greater than or equal to a predetermined index value a (a can be any value in the range of AmvrUmveStepIdx, and the predetermined range is a range greater than or equal to a), both mvOffSetE0_x and mvOffSetE0_y can have a value corresponding to the adaptive motion vector offset (here, denoted as AmvrUmveOffset0) obtained by step 303, for example, AmvrUmveOffset0 or (-AmvrUmveOffset0) or N*AmvrUmveOffset1, where N can be any integer. Since N can be any integer, the offset motion vector can correspond to one of all possible sub-pixels. Also, the values of mvOffSetE0_x and mvOffSetE0_y can be the same or different.

[0134] Code segment 4-3 shown below shows one example of deriving the offset motion vector mvOffSetE0(mvOffSetE0_x, mvOffSetE0_y), however the present disclosure is not limited thereto.

[0135]

[0136] Code segment 4-3

[0137] Accordingly, the offset motion vector mvE0(mvE0_x, mvE0_y) can be derived by the following code segment 4-4.

[0138]

[0139]

[0140] Code segment 4-4

[0141] (b2) InterPredRefMode = 1

[0142] In the case where the value of InterPredRefMode is 1, as described above, the number of motion vectors is equal to 1, and thus the motion vector is denoted as mvBaseE1(mvBaseE1_x, mvBaseE1_y). Also, the offset motion vector can be denoted as mvOffSetE1(mvOffSetE1_x, mvOffSetE1_y).

[0143] When AmvrUmveStepIdx is outside a predetermined range, for example, when AmvrUmveStepIdx is smaller than a predetermined index value a (a can be any value within the range of AmvrUmveStepIdx, and the predetermined range is a range greater than or equal to a), one of mvOffSetE1_x and mvOffSetE1_y can have a value corresponding to the adaptive motion vector offset (denoted as AmvrUmveOffset1 here) obtained by step 303, for example, AmvrUmveOffset1 or (-AmvrUmveOffset1), and the other can have a value of zero, similarly to the case of (a2) described above. Additionally or alternatively, mvOffSetE1_x and mvOffSetE1_y can both have a value of zero.

[0144] Code segment 5-1 shown below shows one example of deriving mvOffSetE1(mvOffSetE1_x, mvOffSetE1_y), however the present disclosure is not limited thereto.

[0145]

[0146] Code segment 5-1

[0147] Accordingly, the offset motion vector mvE1(mvE1_x, mvE1_y) can be derived by the following code segment 5-2.

[0148]

[0149] Code segment 5-2

[0150] When AmvrUmveStepIdx is within a predetermined range, for example, when AmvrUmveStepIdx is greater than or equal to a predetermined index value a (a can be any value in the value range of AmvrUmveStepIdx, and the predetermined range is a range greater than or equal to a), both mvOffSetE1_x and mvOffSetE1_y can have a value corresponding to the adaptive motion vector offset (denoted as AmvrUmveOffset1 here) obtained by step 303, for example, AmvrUmveOffset1 or (-AmvrUmveOffset1) or N*AmvrUmveOffset1, where N can be any integer. Since N can be any integer, the offset motion vector can correspond to one of all possible sub-pixels. And the values of mvOffSetE1_x and mvOffSetE1_y can be the same or different.

[0151] Code segment 5-3 shown below shows one example of deriving mvOffSetE1(mvOffSetE1_x, mvOffSetE1_y), but the present disclosure is not limited thereto.

[0152]

[0153] Code segment 5-3

[0154] Accordingly, the offset motion vector mvE1(mvE1_x, mvE1_y) can be derived by the following code segment 5-4.

[0155]

[0156] Code segment 5-4

[0157] (b3) InterPredRefMode = 2

[0158] In a case where the value of InterPredRefMode is 2, as described above, the number of motion vectors is equal to 2, and thus the motion vectors are denoted as mvBaseE0 (mvBaseE0_x, mvBaseE0_y) and mvBaseE1 (mvBaseE1_x, mvBaseE1_y). Also, the offset motion vectors can be denoted as mvOffSetE0 (mvOffSetE0_x, mvOffSetE0_y) and mvOffSetE1 (mvOffSetE1_x, mvOffSetE1_y).

[0159] In a case where AmvrUmveStepIdx is outside a predetermined range, for example, when AmvrUmveStepIdx is smaller than a predetermined index value a (a can be any value within the range of AmvrUmveStepIdx, and the predetermined range is a range greater than or equal to a), similarly to the case of (a3) described above, one of mvOffSetE0_x and mvOffSetE0_y can have a value corresponding to the adaptive motion vector offset (denoted as AmvrUmveOffset0 here) obtained by step 303, for example, AmvrUmveOffset0 or (-AmvrUmveOffset0), and the other can have a value of zero. Additionally or alternatively, both mvOffSetE0_x and mvOffSetE0_y can have a value of zero.

[0160] Also, one of mvOffSetE1_x and mvOffSetE1_y can have a value corresponding to the adaptive motion vector offset (denoted as AmvrUmveOffset1 here) obtained by step 303, for example, AmvrUmveOffset1 or (-AmvrUmveOffset1), and the other can have a value of zero. Additionally or alternatively, both mvOffSetE1_x and mvOffSetE1_y can have a value of zero.

[0161] The code segment 6-1 shown below shows one example of deriving mvOffSetE0 (mvOffSetE0_x, mvOffSetE0_y) and mvOffSetE1 (mvOffSetE1_x, mvOffSetE1_y), but the present disclosure is not limited thereto.

[0162]

[0163] Code segment 6-1

[0164] Accordingly, the offset motion vectors mvE0(mvE0_x, mvE0_y) and mvE1(mvE1_x, mvE1_y) can be derived by the following code segment 6-2.

[0165]

[0166] Code segment 6-2

[0167] When AmvrUmveStepIdx is within a predetermined range, for example, when AmvrUmveStepIdx is greater than or equal to a predetermined index value a (a can be any value in the range of AmvrUmveStepIdx, and the predetermined range is a range greater than or equal to a), both mvOffSetE0_x and mvOffSetE0_y can have a value corresponding to the adaptive motion vector offset (denoted as AmvrUmveOffset0 here) obtained by step 303, for example, AmvrUmveOffset0 or (-AmvrUmveOffset0), or N*AmvrUmveOffset1, where N can be any integer. Since N can be any integer, the offset motion vector can correspond to one of all possible sub-pixels. Moreover, the values of mvOffSetE0_x and mvOffSetE0_y can be the same or different.

[0168] Moreover, both mvOffSetE1_x and mvOffSetE1_y can have a value corresponding to the adaptive motion vector offset (denoted as AmvrUmveOffset1 here) obtained by step 303, for example, AmvrUmveOffset1 or (-AmvrUmveOffset1) or N*AmvrUmveOffset1, where N can be any integer. Since N can be any integer, the offset motion vector can correspond to one of all possible sub-pixels. Moreover, the values of mvOffSetE1_x and mvOffSetE1_y can be the same or different.

[0169] Code segment 6-3 shown below shows one example of deriving mvOffSetE0(mvOffSetE0_x, mvOffSetE0_y) and mvOffSetE1(mvOffSetE1_x, mvOffSetE1_y), however the present disclosure is not limited thereto.

[0170]

[0171] Code segment 6-3

[0172] Accordingly, the offset motion vectors mvE0(mvE0_x, mvE0_y) and mvE1(mvE1_x, mvE1_y) can be derived by the following code segment 6-4.

[0173]

[0174]

[0175] Code segment 6-4

[0176] With reference to Figure 3 At step 307, the electronic device can determine the offset motion vector of the current coding unit based on the determined offset motion vector and the motion vector of the current coding unit. Specifically, as shown in the aforementioned code segments 1-2, 2-2, 3-2, 4-2, 4-4, 5-2, 5-4, 6-2, 6-4.

[0177] The above describes the method of offsetting the motion vector by way B. By way B, the motion vector can be offset not only in the x direction or the y direction, but also in the direction between the x direction and the y direction, to obtain a more optimal motion vector, thereby improving the prediction accuracy. For example, when the x direction is the horizontal direction (0°) and the y direction is the vertical direction (90°), the motion vector can be offset by way B in other directions except 0°, 90°, 180°, 270°, thereby obtaining a more optimal motion vector and improving the prediction accuracy. For example, as shown in code segments 4-3, 4-4, 5-3, 5-4, 6-3, 6-4, the motion vector can be offset in the direction of 45°, 135°, 225°, 315°.

[0178] After obtaining the offset motion vector by the various methods of offsetting the motion vector described above, the electronic device can perform inter-frame prediction to obtain a prediction sample matrix, which is a well-known technique in the art and will not be described in detail here.

[0179] Figure 6 The structure of the electronic device according to an embodiment of the present disclosure is shown.

[0180] With reference to Figure 6The electronic device 600 includes a memory 610 and a processor 620. The memory 610 can store computer-executable instructions, and the processor 620 can execute the computer-executable instructions to receive an adaptive motion vector difference index and an adaptive motion vector direction index for a current coding unit; determine an adaptive motion vector difference for the current coding unit based on the adaptive motion vector difference index for the current coding unit; determine an offset motion vector for offsetting a motion vector of the current coding unit based on the determined adaptive motion vector difference and the adaptive motion vector direction index for the current coding unit; and determine an offset motion vector for the current coding unit based on the determined offset motion vector and the motion vector of the current coding unit. The electronic device 600 can be implemented in hardware, software, or a combination of hardware and software to enable it to perform any one or more steps in any of the methods described in the present disclosure.

[0181] The electronic device 600 can operate in accordance with a video coding standard, such as the High Efficiency Video Coding (HEVC) standard, extensions or follow-on standards to the HEVC standard, such as ITU-T H.266. Alternatively or additionally, the electronic device 600 can also operate in accordance with other proprietary or industry standards, such as the ITU-T H.264 standard, alternatively referred to as MPEG-4, Part 10, Advanced Video Coding (AVC), or extensions of such standards. However, the techniques of this disclosure are not limited to any particular coding standard. Other examples of video coding standards include MPEG-2 and ITU-T H.263. The electronic device 600 can include appropriate multiplexer-demultiplexer units or other hardware and software to handle encoding of both audio and video in a common data stream or separate data streams. If applicable, the multiplexer-demultiplexer units can comply with the ITU H.223 multiplexer protocol, or other protocols, such as the user datagram protocol (UDP).

[0182] The electronic device 600 can be implemented as any of a variety of suitable encoder or decoder circuitry, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware or any combinations thereof. When the techniques are implemented partially in software, the instructions for the software can be stored in any suitable non-transitory computer-readable medium and executed in hardware using one or more processors to perform the techniques of the present disclosure. The electronic device 600 can be included in one or more decoders, any of which can be integrated as part of a combined decoder in the respective apparatus.

[0183] The electronic devices may be or may be included in various devices, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, electronic book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radio phones, smart phones, video teleconferencing devices, video streaming devices, etc. The electronic devices may implement video coding techniques, such as those described in the following standards: MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 Part 10 Advanced Video Coding (AVC), ITU-T H.265 also known as the High Efficiency Video Coding (HEVC) standard, and extensions of such standards. By implementing these video coding techniques, the electronic devices may more efficiently transmit, receive, encode, decode, and / or store video information.

[0184] It should be appreciated that certain actions or events of any of the techniques described herein may be performed in a different order, may be added, combined, or omitted entirely (e.g., not all described actions or events are required to practice the techniques). Furthermore, in some instances, actions or events may be performed simultaneously rather than sequentially, such as through multithreading, interrupt processing, or multiple processors.

[0185] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored or transmitted as one or more instructions or codes on a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium, which corresponds to a tangible medium such as a data storage medium or a communication medium, which (for example) includes any medium that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this manner, a computer-readable medium may generally correspond to (1) a non-transitory tangible computer-readable storage medium, or (2) a communication medium, such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0186] Such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0187] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor," as used herein can refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.

[0188] The techniques of this disclosure can be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units described in the disclosure can be enabled by hardware components or can be implemented in hardware components and / or software components executed by various hardware components (e.g., processors of general purpose computers, ASICs, FPGAs, or other programmable logic devices). Various components and elements described herein can be combined, some can be omitted, others can be added and still others can be modified to the extent not affecting the essence of the various aspects. Carrying these concepts into the context of the disclosure, various components, modules, or units described herein can be enabled by hardware components or can be implemented in hardware components and / or software components executed by various hardware components (e.g., processors of general purpose computers, ASICs, FPGAs, or other programmable logic devices).

[0189] The above description is merely a specific implementation of the present disclosure, but the protection scope of the present disclosure is not limited thereto, and any person skilled in the art can make various changes or replacements within the technical range disclosed by the present disclosure, and these changes or replacements should be covered within the protection scope of the present disclosure. Therefore, the protection scope of the present disclosure should be subject to the protection scope of the claims.

Claims

1. A method of performing processing on a motion vector of a coding unit, comprising: receiving an adaptive motion vector offset index and an adaptive motion vector direction index of a current coding unit; determining an adaptive motion vector offset of the current coding unit based on the adaptive motion vector offset index of the current coding unit; determining an offset motion vector for offsetting the motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit; and determining an offset motion vector of the current coding unit based on the determined offset motion vector and the motion vector of the current coding unit, wherein the determining the offset motion vector for offsetting the motion vector of the current coding unit based on the determined adaptive motion vector offset and the adaptive motion vector direction index of the current coding unit comprises: when the adaptive motion vector offset index is outside a predetermined range, determining the offset motion vector of the current coding unit as a vector having components in at most one of first and second directions that are non-parallel to each other with values corresponding to the determined adaptive motion vector offset and components in remaining directions with zero values; and when the adaptive motion vector offset index is within the predetermined range, determining the offset motion vector of the current coding unit as a vector having components in both of the first and second directions that are non-parallel to each other with values corresponding to the determined adaptive motion vector offset. 2.The method according to claim 1, further comprising: when an adaptive motion vector precision of the current coding unit satisfies a predetermined condition and a picture of the current coding unit is a predetermined picture, receiving an enhanced adaptive motion vector precision flag of the current coding unit; when the enhanced adaptive motion vector precision flag is a predetermined value, determining to receive the adaptive motion vector offset index and the adaptive motion vector direction index of the current coding unit. The adaptive motion vector precision of the current coding unit satisfying the predetermined condition comprises:

3. The method of claim 2, wherein, the adaptive motion vector precision of the current coding unit is an element in a set consisting of any one or any more of the following precisions: 1 / 2, 1, 2, 4. The picture of the current coding unit being the predetermined picture comprises:

4. The method of claim 2, wherein, the picture of the current coding unit is an element in a set consisting of any one or any more of the following pictures: P picture, B picture. The determining the adaptive motion vector offset based on the adaptive motion vector offset index of the current coding unit comprises one of:

5. The method of claim 1, wherein, determining the adaptive motion vector offset of the current coding unit based on a mapping relationship between the adaptive motion vector offset index and the adaptive motion vector offset; determining the adaptive motion vector offset of the current coding unit based on both of the adaptive motion vector offset index of the current coding unit and an adaptive motion vector precision index of the current coding unit; and determining the adaptive motion vector offset of the current coding unit based on both of the adaptive motion vector offset index of the current coding unit and the adaptive motion vector direction index of the current coding unit. ​ ​ 6. The method of claim 5, wherein, The step of determining the adaptive motion vector offset based on both the adaptive motion vector offset index of the current coding unit and the adaptive motion vector precision index of the current coding unit comprises: The adaptive motion vector offset of the current coding unit is determined based on a mapping relationship among the adaptive motion vector offset index, the adaptive motion vector precision index and the adaptive motion vector offset.

7. The method of claim 5, wherein, The step of determining the adaptive motion vector offset based on both the adaptive motion vector offset index of the current coding unit and the adaptive motion vector direction index of the current coding unit comprises: The adaptive motion vector offset of the current coding unit is determined based on a mapping relationship among the adaptive motion vector offset index, the adaptive motion vector direction index and the adaptive motion vector offset.

8. The method of claim 1, wherein, The predetermined range is a range greater than the predetermined index value.

9. The method of any one of claim 1, wherein, The first direction is perpendicular to the second direction. 10.An electronic device comprising: a memory configured to store computer-executable instructions; and a processor configured to execute the computer-executable instructions stored in the memory to perform the method of any one of claims 1-9.

Citation Information

Patent Citations

  • Method and apparatus of merge with motion vector difference for video coding

    TW202021349A