IP Library Granted Patent US 8,634,464
Granted Patent B2
US 8,634,464 · App. 13/617,834 · Granted Jan 21, 2014

Video compression and encoding method

Inventors: Eric Ameres (Cohoes, NY); James Bankoski (Wynantskill, NY); Adrian W Grange (Cambridgeshire, GB); Tim Murphy (New York, NY); Paul G Wilkins (Cambridge, GB); Yaowu Xu (San Diego, CA)
Assignee: Google, Inc.
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 8,634,464
App. No.
13/617,834
Filed
Sep 14, 2012
Granted
Jan 21, 2014
Kind
B2
Art Unit
2482
USPC
375/240.12
Abstract

Disclosed herein is a method for decoding a video signal having at least one frame with a plurality of blocks including a current block, including generating, for at least a selected pixel in the current block, a predicted value for at least one pixel located in a row i and a column j of the current block using a processor and according to the following equation: X ij =L i +A j −C; wherein X ij is the predicted value, L i is the value of a pixel to the left of the current block, A j is the value of a pixel in a row above the current block and C is the value of a pixel in the row above and the column to the left of the current block and decoding the current block using the predicted value.

Claims (86)

1. A method for decoding at least one video frame having a plurality of blocks including a current block, comprising:

identifying one or more prior-coded blocks that, collectively, at least partially surround the current block, wherein at least some of the prior-coded blocks are each associated with a motion vector value;

assigning each of the identified prior-coded blocks to one of a plurality of groups based on that identified prior-coded block's associated motion vector value;

determining, for at least some of the plurality of groups, the number of identified prior-coded blocks assigned to each group;

selecting a mode for the current block; and

entropy decoding a mode for the current block using a probability based on the determined number of identified prior-coded blocks assigned to each group;

wherein determining the number of identified prior-coded blocks assigned to each group comprises:

identifying a distance from the current block for each of the identified prior-coded blocks;

applying a weight factor to each of at least some of the identified prior-coded blocks based on that block's distance from the current block; and

increasing the number of identified prior-coded blocks assigned to each group based on the applied weight factors.

2. The method of claim 1 , wherein the mode is one of the following:

a first mode indicative of decoding the current block using no motion vector;

a second mode indicative of decoding the current block using a new motion vector;

a third mode indicative of decoding the current block using a nearest motion vector; and

a fourth mode indicative of decoding the current block using a next nearest motion vector.

3. The method of claim 2 , wherein, if the mode is the second mode indicative of decoding the current block using the new motion vector, further comprising:

determining which group of the plurality of groups is assigned a greatest number of blocks; and

using the motion vector value associated with the group assigned the greatest number of blocks to entropy decode the new motion vector for the current block.

4. The method of claim 2 , wherein the plurality of groups comprises:

a first group indicative of a number of identified prior-coded blocks that are decoded using no motion vector;

a second group indicative of a number of identified prior-coded blocks that are decoded using the nearest motion vector;

a third group indicative of a number of identified prior-coded blocks that are decoded using the next nearest motion vector; and

a fourth group indicative of a number of identified prior-coded blocks that are decoded using a motion vector other than no motion vector, the nearest motion vector or the next nearest motion vector.

5. The method of claim 4 , wherein assigning each of the identified prior-coded blocks to one of the plurality of groups, comprises:

assigning the identified prior-coded blocks associated with no motion vector to the first group;

assigning the identified prior-coded blocks associated with the nearest motion vector to the second group;

assigning the identified prior-coded blocks associated with the next nearest motion vector to the third group; and

assigning the identified prior-coded blocks that have not been assigned to the first group, the second group or the third group to the fourth group.

6. The method of claim 5 , wherein determining, for at least some of the plurality of groups, the number of identified prior-coded blocks assigned to each group, comprises:

determining the number of identified prior-coded blocks assigned the first, second, third and fourth groups.

7. The method of claim 1 , wherein the identified prior-coded blocks are twelve blocks surrounding the current block.

8. The method of claim 7 , wherein the twelve blocks include at least a block above the current block and a block to the left of the current block.

9. An apparatus for decoding at least one video frame having a plurality of blocks including a current block, comprising:

a memory; and

a processor configured to execute instructions stored in the memory to:

identify one or more prior-coded blocks that, collectively, at least partially surround the current block, wherein at least some of the prior-coded blocks are each associated with a motion vector value;

assign each of the identified prior-coded blocks to one of a plurality of groups based on that identified prior-coded block's associated motion vector value;

determine, for at least some of the plurality of groups, the number of identified prior-coded blocks assigned to each group; and

entropy decode a mode using a probability based on the determined number of identified prior-coded blocks assigned to each group; wherein the instructions to determine the number of identified prior-coded blocks assigned to each group comprises instructions to:

identify a distance from the current block for each of the identified prior-coded blocks;

apply a weight factor to each of at least some of the identified prior-coded blocks based on that block's distance from the current block; and

increase the number of identified prior-coded blocks assigned to each group based on the applied weight factors.

10. The apparatus of claim 9 , wherein the mode is one of the following:

a first mode indicative of decoding the current block using no motion vector;

a second mode indicative of decoding the current block using a new motion vector;

a third mode indicative of decoding the current block using a nearest motion vector; and

a fourth mode indicative of decoding the current block using a next nearest motion vector.

11. The apparatus of claim 10 , wherein, if the selected mode is the second mode indicative of decoding the current block using the new motion vector, the processor is further configured to execute instructions stored in the memory to:

determine which group of the plurality of groups is assigned a greatest number of blocks; and

use the motion vector value associated with the group assigned the greatest number of blocks to entropy decode the new motion vector for the current block.

12. The apparatus of claim 10 , wherein the plurality of groups comprises:

a first group indicative of a number of identified prior-coded blocks that are decoded using no motion vector;

a second group indicative of a number of identified prior-coded blocks that are decoded using the nearest motion vector;

a third group indicative of a number of identified prior-coded blocks that are decoded using the next nearest motion vector; and

a fourth group indicative of a number of identified prior-coded blocks that are decoded using a motion vector other than no motion vector, the nearest motion vector or the next nearest motion vector.

13. The apparatus of claim 12 , wherein the instructions to assign each of the identified prior-coded blocks to one of the plurality of groups comprises instructions to:

assign the identified prior-coded blocks associated with no motion vector to the first group;

assign the identified prior-coded blocks associated with the nearest motion vector to the second group;

assign the identified prior-coded blocks associated with the next nearest motion vector to the third group; and

assign the identified prior-coded blocks that have not been assigned to the first group, the second group or the third group to the fourth group.

14. The apparatus of claim 13 , wherein the instructions to determine, for at least some of the plurality of groups, the number of identified prior-coded blocks assigned to each group comprises instructions to:

determine the number of identified prior-coded blocks assigned the first, second, third and fourth groups.

15. The apparatus of claim 9 , wherein the identified prior-coded blocks are twelve blocks surrounding the current block.

16. The apparatus of claim 15 , wherein the twelve blocks includes at least a block above the current block and a block to the left of the current block.

17. A method for encoding at least one video frame having a plurality of blocks including a current block, comprising:

identifying one or more prior-coded blocks that, collectively, at least partially surround the current block, wherein at least some of the prior-coded blocks are each associated with a motion vector value;

assigning each of the identified prior-coded blocks to one of a plurality of groups based on that identified prior-coded block's associated motion vector value;

determining, for at least some of the plurality of groups, the number of identified prior-coded blocks assigned to each group;

selecting a mode for the current block; and entropy encoding a mode for the current block using a probability based on the determined number of identified prior-coded blocks assigned to each group; wherein determining the number of identified prior-coded blocks assigned to each group comprises:

identifying a distance from the current block for each of the identified prior-coded blocks;

applying a weight factor to each of at least some of the identified prior-coded blocks based on that block's distance from the current block; and

increasing the number of identified prior-coded blocks assigned to each group based on the applied weight factors;

wherein the mode is one of the following:

a first mode indicative of decoding the current block using no motion vector;

a second mode indicative of decoding the current block using a new motion vector;

a third mode indicative of decoding the current block using a nearest motion vector; and

a fourth mode indicative of decoding the current block using a next nearest motion vector; wherein the plurality of groups comprises:

a first group indicative of a number of identified prior-coded blocks that are decoded using no motion vector;

a second group indicative of a number of identified prior-coded blocks that are decoded using the nearest motion vector;

a third group indicative of a number of identified prior-coded blocks that are decoded using the next nearest motion vector; and

a fourth group indicative of a number of identified prior-coded blocks that are decoded using a motion vector other than no motion vector, the nearest motion vector or the next nearest motion vector; and

wherein assigning each of the identified prior-coded blocks to one of the plurality of groups, comprises:

assigning the identified prior-coded blocks associated with no motion vector to the first group;

assigning the identified prior-coded blocks associated with the nearest motion vector to the second group;

assigning the identified prior-coded blocks associated with the next nearest motion vector to the third group; and

assigning the identified prior-coded blocks that have not been assigned to the first group, the second group or the third group to the fourth group.

Assignments (5)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2012
From: AMERES, ERIC L.; BANKOSKI, JAMES B.; GRANGE, ADRIAN W.; XU, YAOWU; WILKINS, PAUL
To: ON2 TECHNOLOGIES, INC.
Reel/Frame 029445/0893 →
MERGER Recorded Dec 11, 2012
From: ON2 TECHNOLOGIES, INC.
To: ON2 TECHNOLOGIES, LLC
Reel/Frame 029445/0931 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2012
From: ON2 TECHNOLOGIES, LLC
To: GOOGLE INC.
Reel/Frame 029446/0024 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2012
From: MURPHY, TIM
To: GOOGLE INC.
Reel/Frame 029446/0100 →
Continuity (4)
Continuation 13066668 · Apr 21, 2011
Continuation 11170629 · Jun 28, 2005
Provisional Application 60583872 · Jun 28, 2004
Related Publication 20130016779A1 · Jan 17, 2013