IP Library Granted Patent US 9,509,998
Granted Patent B1
US 9,509,998 · App. 13/856,678 · Granted Nov 29, 2016

Conditional predictive multi-symbol run-length coding

Inventor: Qunshan Gu (Hayward, CA)
Assignee: GOOGLE INC.
H04N19/00957
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 9,509,998
App. No.
13/856,678
Granted
Nov 29, 2016
Kind
B1
Abstract

Conditional predictive multi-symbol run-length coding may include generating a differential residual block based on a residual block and a reconstructed residual block, entropy encoding the differential residual block by determining a symbol order for a plurality of symbols in the differential residual block, grouping the plurality of symbols into at least a first group and a second group based on the symbol order, run-length encoding the plurality of symbols in the differential residual block, by on a condition that a first symbol from the plurality of symbols is associated with the first group, encoding a second symbol from the plurality of symbols, and on a condition that the first symbol is associated with the second group, modifying the second symbol and encoding the modified second symbol.

Claims (49)

1. A method for encoding a video stream including a plurality of frames, the method comprising:

generating a residual block based on a current block from a current frame from the plurality of frames;

generating a reconstructed residual block based on the residual block;

generating a differential residual block based on the residual block and the reconstructed residual block;

entropy encoding the differential residual block by:

determining a symbol order for a plurality of symbols in the differential residual block,

grouping the plurality of symbols into at least a first group and a second group based on the symbol order,

run-length encoding the plurality of symbols in the differential residual block, wherein run-length encoding includes:

on a condition that a first symbol from the plurality of symbols is associated with the first group, encoding a second symbol from the plurality of symbols, and

on a condition that the first symbol is associated with the second group, modifying the second symbol and encoding the modified second symbol; and

transmitting or storing an output including the encoded differential residual block wherein entropy encoding the differential residual block includes: associating the first group with a first plurality of code words such that each symbol associated with the first group is represented by a respective code word in the first plurality of code words; associating the second group with a second plurality of code words such that each symbol associated with the second group is represented by a respective code word in the second plurality of code words, wherein at least one code word from the first plurality of code words matches a code word from the second plurality of code words.

2. The method of claim 1 , wherein modifying the second symbol includes: on a condition that the first symbol is greater than zero, decreasing the second symbol by one less than the first symbol; and

on a condition that the first symbol is less than zero, decreasing the second symbol by one more than the first symbol.

3. The method of claim 1 , wherein modifying the second symbol includes associating the second symbol with the first group.

4. The method of claim 1 , wherein determining the symbol order includes:

using a default symbol order as the symbol order; and

selectively reordering a symbol in the symbol order.

5. The method of claim 1 , wherein transmitting or storing the output includes indicating the symbol order in a frame header, a slice header, a segment header, a macroblock header, or a block header.

6. The method of claim 1 , wherein grouping the plurality of symbols includes associating three symbols from the plurality of symbols with the first group.

7. The method of claim 1 , wherein run-length encoding includes including a run-length indicator in the output.

8. The method of claim 1 , wherein run-length encoding includes determining a run-length indicator based on a cardinality of consecutive symbols associated with the first group.

9. The method of claim 1 , wherein transmitting or storing the output includes indicating a maximum run-length in a frame header, a slice header, a segment header, a macroblock header, or a block header.

10. The method of claim 9 , wherein transmitting or storing the output does not include indicating a maximum run-length on a condition that the maximum run-length is inferable based on a default word-length.

11. A method for encoding a video stream including a plurality of frames, the method comprising:

generating a residual block based on a current block from a current frame from the plurality of frames;

generating a reconstructed residual block based on the residual block;

generating a differential residual block based on the residual block and the reconstructed residual block;

entropy encoding the differential residual block by:

determining a symbol order for a plurality of symbols in the differential residual block,

grouping the plurality of symbols into at least a first group and a second group based on the symbol order,

run-length encoding the plurality of symbols in the differential residual block, wherein run-length encoding includes:

determining a run-length indicator based on a cardinality of consecutive symbols associated with the first group,

on a condition that a first symbol from the plurality of symbols is associated with the first group, encoding a second symbol from the plurality of symbols, and

on a condition that the first symbol is associated with the second group, modifying the second symbol and encoding the modified second symbol wherein modifying the second symbol includes:

on a condition that the first symbol is greater than zero, decreasing the second symbol by one less than the first symbol; and

on a condition that the first symbol is less than zero, decreasing the second symbol by one more than the first symbol; and

transmitting or storing an output including the encoded differential residual block wherein entropy encoding the differential residual block includes: associating the first group with a first plurality of code words such that each symbol associated with the first group is represented by a respective code word in the first plurality of code words; associating the second group with a second plurality of code words such that each symbol associated with the second group is represented by a respective code word in the second plurality of code words, wherein at least one code word from the first plurality of code words matches a code word from the second plurality of code words.

12. The method of claim 11 , wherein modifying the second symbol includes associating the second symbol with the first group.

13. The method of claim 11 , wherein determining the symbol order includes: using a default symbol order as the symbol order; and

selectively reordering a symbol in the symbol order.

14. The method of claim 11 , wherein transmitting or storing the output includes indicating the symbol order in a frame header, a slice header, a segment header, a macroblock header, or a block header.

15. The method of claim 11 , wherein run-length encoding includes including the run-length indicator in the output.

16. The method of claim 11 , wherein transmitting or storing the output includes indicating a maximum run-length indicator in a frame header, a slice header, a segment header, a macroblock header, or a block header.

17. The method of claim 11 , wherein transmitting or storing the output does not include indicating a maximum run-length on a condition that the maximum run-length is inferable based on a default word-length.

18. A method for encoding a video stream including a plurality of frames, the method comprising:

generating a differential residual block based on a residual block and a reconstructed residual block;

entropy encoding the differential residual block using run-length encoding based on groupings of a plurality of symbols from the differential residual block, wherein run-length encoding includes:

on a condition that a first symbol from the plurality of symbols is associated with a first group, encoding a second symbol from the plurality of symbols, and

on a condition that the first symbol is associated with a second group, modifying the second symbol and encoding the modified second symbol; and transmitting or storing an output including the encoded differential residual block wherein entropy encoding the differential residual block includes: associating the first group with a first plurality of code words such that each symbol associated with the first group is represented by a respective code word in the first plurality of code words; associating the second group with a second plurality of code words such that each symbol associated with the second group is represented by a respective code word in the second plurality of code words, wherein at least one code word from the first plurality of code words matches a code word from the second plurality of code words.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044097/0658 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2013
From: GU, QUNSHAN
To: GOOGLE INC.
Reel/Frame 030305/0979 →