IP Library › Granted Patent US 12,167,027
Granted Patent B2
US 12,167,027 · App. 18/155,641 · Granted Dec 10, 2024

Video encoder, video decoder, and corresponding method

Inventors: Huanbang Chen (Shenzhen, CN); Haitao Yang (Shenzhen, CN); Jianle Chen (San Diego, CA)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
H04N19/52H04N19/105H04N19/50
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,167,027
App. No.
18/155,641
Granted
Dec 10, 2024
Kind
B2
Abstract

A video encoder, a video decoder, and a corresponding method are provided. The method includes: parsing a bitstream to obtain an index, where the index indicates a target candidate motion vector group of a current coding block; determining the target candidate motion vector group in an affine candidate motion vector list based on the index, where the affine candidate motion vector list includes at least a first candidate motion vector group, the first candidate motion vector group is obtained based on a first group of control points of a first neighboring affine coding block, and the first group of control points is determined based on a CTU located relative to the current coding block, wherein the first neighboring affine coding block is located in the CTU; and predicting a predicted sample value of the current coding block based on the target candidate motion vector group.

Claims (41)

1. An encoding method, comprising:

in response to an affine inter mode for a current coding block,

determining, a target candidate motion vector group in an affine candidate motion vector list according to a rate-distortion cost criterion, wherein the target candidate motion vector group represents motion vector predictors of a group of control points of the current coding block, the affine candidate motion vector list comprises at least a first candidate motion vector group, the first candidate motion vector group is obtained based on a first group of control points of a first neighboring affine coding block of the current coding block, and the first group of control points of the first neighboring affine coding block are control points determined based on a relative location of a coding tree unit (CTU) with respect to the current coding block, wherein the first neighboring affine coding block is located in the CTU;

determining motion vector differences (MVDs) of the group of control points between the target candidate motion vector group and motion vectors of the group of control points; and

encoding the MVDs of the group of control points and an index corresponding to the target candidate motion vector group into a to-be-transmitted bitstream.

2. The method according to claim 1 , wherein there is a CTU boundary between a CTU where the current coding block is located, and the CTU where the first neighboring affine coding block is located.

3. The method according to claim 1 , wherein:

the first candidate motion vector group is obtained based on a first affine model, and the first affine model is determined based on motion vectors and location coordinates of the first group of control points of the first neighboring affine coding block.

4. The method according to claim 1 , wherein the affine candidate motion vector list further comprises a second candidate motion vector group, and the second candidate motion vector group is obtained based on a second group of control points of a second neighboring affine coding block; wherein locations of one or more control points in the second group of control points of the second neighboring affine coding block relative to the second neighboring affine coding block are different from locations of one or more control points in the first group of control points of the first neighboring affine coding block relative to the first neighboring affine coding block, or the second group of control points of the second neighboring affine coding block comprises a bottom-left control point and a bottom-right control point of the second neighboring affine coding block.

5. The method according to claim 1 , wherein that the first group of control points of the first neighboring affine coding block are control points determined based on a relative location of a CTU with respect to the current coding block, wherein the first neighboring affine coding block is located in the CTU comprises:

if the first neighboring affine coding block is located in a CTU above the current coding block, the first group of control points of the first neighboring affine coding block comprises a bottom-left control point and a bottom-right control point of the first neighboring affine coding block.

6. The method according to claim 5 , wherein if the first neighboring affine coding block is located in the CTU above the current coding block, the first group of control points of the first neighboring affine coding block further comprises a top-left control point or a top-right control point of the first neighboring affine coding block.

7. The method according to claim 1 , wherein that the first group of control points of the first neighboring affine coding block are control points determined based on a relative location of a CTU with respect to the current coding block, wherein the first neighboring affine coding block is located in the CTU comprises:

if the first neighboring affine coding block is located in a CTU on the left of the current coding block, the first group of control points of the first neighboring affine coding block comprises a top-right control point and a bottom-right control point of the first neighboring affine coding block.

8. The method according to claim 7 , wherein if the first neighboring affine coding block is located in the CTU on the left of the current coding block, the first group of control points of the first neighboring affine coding block further comprises a top-left control point or a bottom-left control point of the first neighboring affine coding block.

9. The method according to claim 1 , wherein when the first group of control points of the first neighboring affine coding block comprises a bottom-left control point and a bottom-right control point of the first neighboring affine coding block, the first group of control points of the first neighboring affine coding block further comprises a top-left control point of the first neighboring affine coding block.

10. The method according to claim 1 , wherein both location coordinates (x 6 , y 6 ) of a bottom-left control point of the first neighboring affine coding block and location coordinates (x 7 , y 7 ) of a bottom-right control point of the first neighboring affine coding block are derived based on location coordinates (x 4 , y 4 ) of a top-left control point of the first neighboring affine coding block, the location coordinates (x 6 , y 6 ) of the bottom-left control point of the first neighboring affine coding block are represented by (x 4 , y 4 +cuH), and the location coordinates (x 7 , y 7 ) of the bottom-right control point of the first neighboring affine coding block are represented by (x 4 +cuW, y 4 +cuH), wherein cuW is a width of the first neighboring affine coding block, and cuH is a height of the first neighboring affine coding block.

11. The method according to claim 10 , wherein a motion vector of the bottom-left control point of the first neighboring affine coding block is a motion vector of a bottom-left sub-block of the first neighboring affine coding block, and a motion vector of the bottom-right control point of the first neighboring affine coding block is a motion vector of a bottom-right sub-block of the first neighboring affine coding block.

12. A video data encoding device, comprising:

a memory, configured to store video data in a form of a bitstream; and

a video encoder, configured to:

in response to an affine inter mode for a current coding block,

determine a target candidate motion vector group in an affine candidate motion vector list according to a rate-distortion cost criterion, wherein the target candidate motion vector group represents motion vector predictors of a group of control points of the current coding block, the affine candidate motion vector list comprises at least a first candidate motion vector group, the first candidate motion vector group is obtained based on a first group of control points of a first neighboring affine coding block of the current coding block, and the first group of control points of the first neighboring affine coding block are control points determined based on a relative location of a coding tree unit (CTU) with respect to the current coding block, wherein the first neighboring affine coding block is located in the CTU;

determine motion vector differences (MVDs) of the group of control points between the target candidate motion vector group and motion vectors of the group of control points; and

encode the MVDs of the group of control points and an index corresponding to the target candidate motion vector group into a to-be-transmitted bitstream.

13. The video data encoding device according to claim 12 , wherein there is a CTU boundary between a CTU where the current coding block is located, and the CTU where the first neighboring affine coding block is located.

14. The video data encoding device according to claim 12 , wherein:

the first candidate motion vector group is obtained based on a first affine model, and the first affine model is determined based on motion vectors and location coordinates of the first group of control points of the first neighboring affine coding block.

15. The video data encoding device according to claim 12 , wherein the affine candidate motion vector list further comprises a second candidate motion vector group, and the second candidate motion vector group is obtained based on a second group of control points of a second neighboring affine coding block; wherein locations of one or more control points in the second group of control points of the second neighboring affine coding block relative to the second neighboring affine coding block are different from locations of one or more control points in the first group of control points of the first neighboring affine coding block relative to the first neighboring affine coding block, or the second group of control points of the second neighboring affine coding block comprises a bottom-left control point and a bottom-right control point of the second neighboring affine coding block.

16. The method according to claim 12 , wherein that the first group of control points of the first neighboring affine coding block are control points determined based on a relative location of a CTU with respect to the current coding block, wherein the first neighboring affine coding block is located in the CTU comprises:

if the first neighboring affine coding block is located in a CTU above the current coding block, the first group of control points of the first neighboring affine coding block comprises a bottom-left control point and a bottom-right control point of the first neighboring affine coding block.

17. The method according to claim 16 , wherein if the first neighboring affine coding block is located in the CTU above the current coding block, the first group of control points of the first neighboring affine coding block further comprises a top-left control point or a top-right control point of the first neighboring affine coding block.

18. The method according to claim 12 , wherein when the first group of control points of the first neighboring affine coding block comprises a bottom-left control point and a bottom-right control point of the first neighboring affine coding block, the first group of control points of the first neighboring affine coding block further comprises a top-left control point of the first neighboring affine coding block.

19. The method according to claim 12 , wherein both location coordinates (x 6 , y 6 ) of a bottom-left control point of the first neighboring affine coding block and location coordinates (x 7 , y 7 ) of a bottom-right control point of the first neighboring affine coding block are derived based on location coordinates (x 4 , y 4 ) of a top-left control point of the first neighboring affine coding block, the location coordinates (x 6 , y 6 ) of the bottom-left control point of the first neighboring affine coding block are represented by (x 4 , y 4 +cuH), and the location coordinates (x 7 , y 7 ) of the bottom-right control point of the first neighboring affine coding block are represented by (x 4 +cuW, y 4 +cuH), wherein cuW is a width of the first neighboring affine coding block, and cuH is a height of the first neighboring affine coding block.

20. The video data encoding device according to claim 19 , wherein a motion vector of the bottom-left control point of the first neighboring affine coding block is a motion vector of a bottom-left sub-block of the first neighboring affine coding block, and a motion vector of the bottom-right control point of the first neighboring affine coding block is a motion vector of a bottom-right sub-block of the first neighboring affine coding block.

21. A non-transitory computer-readable media storing computer instructions, that when executed by one or more processors, cause the one or more processors to perform operations, the operations comprising:

in response to an affine inter mode for a current coding block,

determining a target candidate motion vector group in an affine candidate motion vector list according to a rate-distortion cost criterion, wherein the target candidate motion vector group represents motion vector predictors of a group of control points of the current coding block, the affine candidate motion vector list comprises at least a first candidate motion vector group, the first candidate motion vector group is obtained based on a first group of control points of a first neighboring affine coding block of the current coding block, and the first group of control points of the first neighboring affine coding block are control points determined based on a relative location of a coding tree unit (CTU) with respect to the current coding block, wherein the first neighboring affine coding block is located in the CTU;

determining motion vector differences (MVDs) of the group of control points between the target candidate motion vector group and motion vectors of the group of control points; and

encoding the MVDs of the group of control points and an index corresponding to the target candidate motion vector group into a to-be-transmitted bitstream.

22. A non-transitory storage medium having an encoded bitstream for a video signal stored therein, the encoded bitstream including motion vector differences (MVDs) of a group of control points between a target candidate motion vector group and motion vectors of the group of control points and an index indicating the target candidate motion vector group, wherein the index and the MVDs enables a computer to determine motion vectors of the group of control points of a current coding block.

Continuity (5)
Continuation 17146349 · Jan 11, 2021
Continuation PCTCN2018110436 · Oct 16, 2018
Provisional Application 62737858 · Sep 27, 2018
Provisional Application 62696832 · Jul 11, 2018
Related Publication 20230239494A1 · Jul 27, 2023