IP Library › Granted Patent US 10,462,457
Granted Patent B2
US 10,462,457 · App. 15/373,518 · Granted Oct 29, 2019

Dynamic reference motion vector coding mode

Inventors: Yaowu Xu (Saratoga, CA); Jingning Han (Santa Clara, CA)
Assignee: GOOGLE LLC
H04N19/105H04N19/109H04N19/139H04N19/176H04N19/52
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 10,462,457
App. No.
15/373,518
Filed
Dec 9, 2016
Granted
Oct 29, 2019
Kind
B2
Examiner
NOH, JAE NAM
Art Unit
2481
USPC
375/240.16
Abstract

Techniques are described to use a reference motion vector to reduce the amount of bits needed to encode motion vectors for inter prediction. A dynamic motion vector coding mode generates a ranked list of motion vector candidates using a distance between previously coded blocks and a current block, and the frequency of use of the motion vectors of those previously coded blocks. The list is used to assign the effective motion vectors to different inter-prediction modes, including a variable number of reference motion vector modes.

Claims (64)

1. A method for decoding a video stream including a processor, the method comprising:

identifying, for a current block, a reference frame used to encode the current block within a current frame;

creating a reference motion vector candidate list for the reference frame using reference blocks within at least one frame of the video stream;

determining a popularity value of a motion vector within the reference motion vector candidate list, wherein the popularity value indicates a level of use of the motion vector by at least some of the reference blocks, and determining the popularity value comprises:

calculating a number of previously coded pixels within the at least some of the reference blocks having values that were predicted using the motion vector, the popularity value determined using the number of previously coded pixels;

ranking each motion vector within the reference motion vector candidate list by a distance from the current block to a reference block providing the motion vector, and by the popularity value of the motion vector;

assigning the motion vectors to a plurality of inter-prediction modes based on the ranking;

selecting an inter-prediction mode for decoding the current block;

decoding the current block using the inter-prediction mode;

determining whether the current block was encoded using single or compound prediction, wherein single prediction comprises using only one reference frame for inter prediction of the current block and compound prediction comprises using at least two reference frames for inter prediction of the current block;

in response to determining that the current block was encoded using compound prediction:

identifying the reference frame used to encode the current block comprises identifying a first reference frame and a second reference frame used to encode the current block; and

creating the reference motion vector candidate list for the reference frame comprises creating a first reference motion vector candidate list for the first reference frame and creating a second reference motion vector list for the second reference frame using the reference blocks.

2. The method of claim 1 , wherein the larger a number of previously coded pixels within the at least some of the reference blocks using a motion vector within the reference motion vector candidate list, the higher the popularity value of the motion vector.

3. The method of claim 1 , wherein the popularity value comprises the number of previously coded pixels within the reference block.

4. The method of claim 1 , wherein assigning the motion vectors comprises:

assigning a motion vector having a highest popularity value in the ranking to an inter-prediction mode that includes differential coding of a new motion vector.

5. The method of claim 4 , wherein assigning the motion vectors comprises:

assigning a motion vector having a second highest popularity value to a dynamic reference motion vector inter-prediction mode as a first motion vector; and

assigning a motion vector having a third highest popularity value to the dynamic reference motion vector inter-prediction mode as a second motion vector.

6. The method of claim 5 , wherein the first motion vector is assigned to a NEARESTMV mode, and the second motion vector is assigned to a NEARMV mode.

7. A method for decoding a video stream including a processor, the method comprising:

identifying, for a current block, a reference frame used to encode the current block within a current frame;

creating a reference motion vector candidate list for the reference frame using reference blocks within at least one frame of the video stream;

determining a popularity value of a motion vector within the reference motion vector candidate list, wherein the popularity value indicates a level of use of the motion vector by at least some of the reference blocks, and determining the popularity value comprises:

calculating a number of previously coded pixels within the at least some of the reference blocks having values that were predicted using the motion vector, the popularity value determined using the number of previously coded pixels;

ranking each motion vector within the reference motion vector candidate list by a distance from the current block to a reference block providing the motion vector, and by the popularity value of the motion vector;

assigning the motion vectors to a plurality of inter-prediction modes based on the ranking;

selecting an inter-prediction mode for decoding the current block;

decoding the current block using the inter-prediction mode;

for each motion vector within the reference motion vector candidate list, determining the distance from the current block to the reference block providing the motion vector, wherein ranking each motion vector comprises:

grouping the motion vectors from the reference blocks in the current frame into a first category of candidate motion vectors;

grouping remaining motion vectors of the reference blocks that are not in the first category of candidate motion vectors into a second category of candidate motion vectors; and

ranking the first category of candidate motion vectors;

ranking the second category of candidate motion vectors; and

including the ranked motion vectors within the first category of candidate motion vectors ahead of the ranked motion vectors within the second category of candidate motion vectors in the reference motion vector candidate list.

8. The method of claim 7 , wherein ranking each motion vector comprises:

within the first category of candidate motion vectors, ranking based on respective popularity values; and

within the second category of candidate motion vectors, ranking based on respective popularity values.

9. An apparatus for decoding a video stream, comprising:

a processor; and

a memory storing instructions that cause the processor to perform a method comprising:

identifying, for a current block, a reference frame used to encode the current block within a current frame;

creating a reference motion vector candidate list for the reference frame using reference blocks, the reference blocks including spatially adjacent blocks abutting the current block, a collocated block within a previous frame, and spatially adjacent blocks abutting the collocated block within the previous frame, wherein at least some of the reference blocks have a size different from the current block;

determining a popularity value of a motion vector within the reference motion vector candidate list, wherein the popularity value indicates a level of use of the motion vector by the reference blocks, and determining the popularity value comprises:

calculating a number of previously coded pixels within the reference blocks having values that were predicted using the motion vector, the popularity value determined using the number of previously coded pixels;

ranking each motion vector within the reference motion vector candidate list by a distance from the current block to a reference block providing the motion vector, and by the popularity value of the motion vector;

assigning the motion vectors to a plurality of inter-prediction modes based on the ranking;

selecting an inter-prediction mode for decoding the current block; and

decoding the current block using the inter-prediction mode.

10. The apparatus of claim 9 , wherein the instructions for decoding the current block comprise instructions for decoding the current block using a motion vector assigned to the inter-prediction mode to inter-predict the current block.

11. The apparatus of claim 9 , wherein determining the popularity value comprises determining a percentage of the number of previously coded pixels as compared to a total number of previously coded pixels of the reference blocks.

12. The apparatus of claim 9 , wherein the reference frame is a first reference frame of at least two available reference frames, and the instructions for creating a reference motion vector candidate list for the reference frame comprise instructions for creating a single motion vector candidate list for the at least two available reference frames.

13. The apparatus of claim 12 , wherein the instructions further comprise instructions for:

determining a first temporal difference between the current frame and the first reference frame;

determining a second temporal difference between the current frame and a second reference frame of the at least two available reference frames;

including a first motion vector associated with the first reference frame in the reference motion vector candidate list; and

responsive to the first temporal difference being longer than the second temporal difference, scaling up a magnitude of a second motion vector associated with the second reference frame for inclusion in the reference motion vector candidate list; and

responsive to the first temporal difference being shorter than the second temporal difference, scaling down a magnitude of a second motion vector associated with the second reference frame for inclusion in the reference motion vector candidate list.

14. The apparatus of claim 9 , wherein the spatially adjacent blocks of the collocated block within the previous frame each comprise a smallest available prediction block size and are in contact with a respective corner of the collocated block.

15. The apparatus of claim 9 , wherein the instructions further comprise instructions for calculating the popularity value for each motion vector within the reference motion vector candidate list.

16. The apparatus of claim 9 , wherein the instructions for creating the reference motion vector candidate list comprises instructions for:

searching for a reference frame index of the reference frame for motion vectors used to inter-predict the reference blocks; and

including any of the motion vectors used to inter-predict the reference blocks having the reference frame index in the reference motion vector candidate list.

Assignments (2)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2016
From: XU, YAOWU; HAN, JINGNING
To: GOOGLE INC.
Reel/Frame 040607/0977 →
Continuity (3)
Provisional Application 62330491 · May 2, 2016
Provisional Application 62288553 · Jan 29, 2016
Related Publication 20170223350A1 · Aug 3, 2017
Cited By (1)
US 12,513,300