IP Library Granted Patent US 9,055,338
Granted Patent B2
US 9,055,338 · App. 12/047,225 · Granted Jun 9, 2015

System and method for video encoding and decoding

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,055,338
App. No.
12/047,225
Granted
Jun 9, 2015
Kind
B2
Abstract

A video coding method comprises dividing a coefficient vector into two or more sub-vectors, each sub-vector having a length less than or equal to a length of the coefficient vector, indicating a size of each sub-vector and a position of each sub-vector within the coefficient vector, and forming a block corresponding to each sub-vector.

Claims (103)

1. A method comprising:

dividing coefficient values of a coefficient vector representative of a block of an image into a plurality of sub-vectors without padded zeros;

indicating a position of a sub-vector of the plurality of sub-vectors within the coefficient vector; and

encoding coefficient values of the sub-vector using a variable-length coder and the indication of the position of the sub-vector.

2. The method of claim 1 , wherein the position of the sub-vector is indicated by a start and end position within the coefficient vector.

3. The method of claim 1 , wherein the position of the sub-vector is indicated by a start position within the coefficient vector and a length of the sub-vector.

4. The method of claim 1 , further comprising:

selecting a variable length coder for the sub-vector based on the length of the sub-vector from a group of variable length coders.

5. The method of claim 4 , wherein the selecting a coder includes determining whether the length of the sub-vector is greater than or less than a predetermined threshold.

6. The method of claim 4 , further comprising:

assigning a variable-length codeword to represent a coefficient of the sub-vector based on the sub-vector length.

7. The method of claim 1 , further comprising:

selecting a variable length coder for the sub-vector based on the position of the sub-vector within the coefficient vector from a group of variable length coders.

8. The method of claim 1 , further comprising:

encoding a “trailing ones” syntax element for a block corresponding to the sub-vector.

9. The method of claim 1 , further comprising:

encoding a coded block pattern for a macroblock, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

10. The method of claim 1 , further comprising:

encoding an indication representative of whether a coded block pattern for a macroblock is derived from a coded block pattern for a previously coded macroblock or not, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

11. An apparatus comprising a processor and a memory storing program code, the memory and program code being configured to, with the processor, cause the apparatus to at least:

receive a source video signal;

process the video signal, dividing coefficient values of a coefficient vector representative of a block of an image into a plurality of sub-vectors without padded zeros;

provide an indication of a position of a sub-vector of the plurality of sub-vectors within the coefficient vector; and

encode coefficient values of the sub-vector using a variable-length coder and the indication of the position of the sub-vector.

12. The apparatus of claim 11 , wherein the position of the sub-vector is indicated by a start and end position within the coefficient vector.

13. The apparatus of claim 11 , wherein the position of the sub-vector is indicated by a start position within the coefficient vector and a length of the sub-vector.

14. The apparatus of claim 11 , wherein the apparatus is further caused to select a variable length coder for the sub-vector based on the length of the sub-vector from a group of variable length coders.

15. The apparatus of claim 14 , wherein the apparatus is further caused to determine whether the length of the sub-vector is greater than or less than a predetermined threshold.

16. The apparatus of claim 14 , wherein the apparatus is further caused to assign a variable-length codeword to represent a coefficient of the sub-vector based on the sub-vector length.

17. The apparatus of claim 11 , wherein the apparatus is further caused to select a variable length coder for the sub-vector based on the position of the sub-vector within the coefficient vector from a group of variable length coders.

18. The apparatus of claim 11 , wherein the apparatus is further caused to encode a “trailing ones” syntax element for the a block corresponding to a the sub-vector.

19. The apparatus of claim 11 , wherein the apparatus is further caused to encode a coded block pattern for a macroblock, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

20. An apparatus, comprising:

a processor; and

a memory communicatively connected to the processor and including:

computer code for dividing coefficient values of a coefficient vector representative of a block of an image into a plurality of sub-vectors without padded zeros;

computer code for providing an indication of a position of a sub-vector of the plurality of sub-vectors within the coefficient vector; and

computer code for encoding coefficient values of the sub-vector using a variable-length code and the indication of the position of the sub-vector.

21. A non-transitory computer-readable storage medium having computer-executable components, comprising:

computer code configured to, upon execution, cause an apparatus to divide coefficient values of a coefficient vector representative of a block of an image into a plurality of sub-vectors without padded zeros;

computer code configured to, upon execution, cause the apparatus to provide an indication of a position of a sub-vector of the plurality of sub-vectors within the coefficient vector; and

computer code configured to, upon execution, cause the apparatus to encode coefficient values of the sub-vector using a variable-length coder and the indication of the position of the sub-vector.

22. The non-transitory computer-readable storage medium of claim 21 , wherein the position of the sub-vector is indicated by a start and end position within the coefficient vector.

23. The non-transitory computer-readable storage medium of claim 21 , further comprising:

computer code configured to, upon execution, cause the apparatus to select a variable length coder for the sub-vector based on the length of the sub-vector from a group of variable length coders.

24. The non-transitory computer-readable storage medium of claim 21 , further comprising:

computer code configured to, upon execution, cause the apparatus to assign a variable-length codeword to represent a coefficient of the sub-vector based on the sub-vector length.

25. The non-transitory computer-readable storage medium of claim 21 , further comprising:

computer code configured to, upon execution, cause the apparatus to encode a coded block pattern for a macroblock, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

26. A method comprising:

receiving an indication of a position of a sub-vector within a coefficient vector representative of a block of an image;

receiving a set of coefficients for the sub-vector without padded zeros;

forming the coefficient vector based on the received set of coefficients and the received indication of the position of the sub-vector; and

decoding the block.

27. The method of claim 26 , wherein the position of the sub-vector is indicated by a start and end position within the coefficient vector.

28. The method of claim 26 , wherein the position of the sub-vector is indicated by a start position within the coefficient vector and a length of the sub-vector.

29. The method of claim 26 , further comprising:

selecting a variable length coder for the sub-vector based on the length of the sub-vector from a group of variable length coders.

30. The method of claim 29 , wherein the selecting a coder includes determining whether the length of the sub-vector is greater than or less than a predetermined threshold.

31. The method of claim 29 , further comprising:

decoding a variable-length codeword to represent a coefficient of the sub-vector based on the sub-vector length.

32. The method of claim 26 , further comprising:

selecting a variable length coder for the sub-vector based on the position of the sub-vector within the coefficient vector from a group of variable length coders.

33. The method of claim 26 , further comprising:

decoding a “trailing ones” syntax element for the block corresponding to a sub-vector.

34. The method of claim 26 , further comprising:

decoding a coded block pattern for a macroblock, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

35. The method of claim 26 , further comprising:

receiving an indication representative of whether a coded block pattern for a macroblock is derived from a coded block pattern for a previously coded macroblock or not, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

36. An apparatus, comprising a processor and a memory storing program code, the memory and program code being configured to, with the processor, cause the apparatus to at least:

receive a source video signal;

receive an indication of a position of a sub-vector within a coefficient vector representative of a block of an image;

receive a set of coefficients for the sub-vector without padded zeros;

form the coefficient vector based on the received set of coefficients and the position of the sub-vector; and

decode the block.

37. The apparatus of claim 36 , wherein the position of the sub-vector is indicated by a start and end position within the coefficient vector.

38. The apparatus of claim 36 , wherein the position of the sub-vector is indicated by a start position within the coefficient vector and a length of the sub-vector.

39. The apparatus of claim 36 , wherein the apparatus is further caused to select a variable length coder for the sub-vector based on the length of the sub-vector from a group of variable length coders.

40. The apparatus of claim 39 , wherein the apparatus is further caused to determine whether the length of the sub-vector is greater than or less than a predetermined threshold.

41. The apparatus of claim 39 , wherein the apparatus is further caused to decode a variable-length codeword to represent a coefficient of the sub-vector based on the sub-vector length.

42. The apparatus of claim 36 , wherein the apparatus is further caused to select a variable length coder for the sub-vector based on the position of the sub-vector within the coefficient vector from a group of variable length coders.

43. The apparatus of claim 36 , wherein the apparatus is further caused to decode a “trailing ones” syntax element for the block corresponding to a sub-vector.

44. The apparatus of claim 36 , wherein the apparatus is further caused to decode a coded block pattern for a macroblock, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

45. The apparatus of claim 36 , wherein the apparatus is further caused to receive an indication representative of whether a coded block pattern for a macroblock is derived from a coded block pattern for a previously coded macroblock or not, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

46. An apparatus, comprising:

a processor; and

a memory communicatively connected to the processor and including:

computer code for receiving an indication of a position of a sub-vector within a coefficient vector representative of a block of an image;

computer code for receiving a set of coefficients for the sub-vector without padded zeros;

computer code for forming the coefficient vector based on the received set of coefficients and the position of the sub-vector; and

computer code for decoding the block.

47. A non-transitory computer-readable storage medium having computer-executable components, comprising:

computer code configured to, upon execution, cause an apparatus to receive an indication of a position of a sub-vector within a coefficient vector representative of a block of an image;

computer code configured to, upon execution, cause the apparatus to receive a set of coefficients for the sub-vector without padded zeros;

computer code configured to, upon execution, cause the apparatus to form the coefficient vector based on the received set of coefficients and the position of the sub-vector; and

computer code configured to, upon execution, cause the apparatus to decode the block.

48. The non-transitory computer-readable storage medium of claim 47 , wherein the position of the sub-vector is indicated by a start and end position within the coefficient vector.

49. The non-transitory computer-readable storage medium of claim 47 , further comprising:

computer code configured to, upon execution, cause the apparatus to select a variable length coder for the sub-vector based on the length of the sub-vector from a group of variable length coders.

50. The non-transitory computer-readable storage medium of claim 47 , further comprising:

computer code configured to, upon execution, cause the apparatus to decode a variable-length codeword to represent a coefficient of the sub-vector based on the sub-vector length.

51. The non-transitory computer-readable storage medium of claim 47 , further comprising:

computer code configured to, upon execution, cause the apparatus to decode a coded block pattern for a macroblock, the coded block pattern representative of whether a plurality of sub-vectors of coefficient vectors corresponding to a plurality of blocks of the macroblock have any non-zero coefficient values.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2015
From: NOKIA CORPORATION
To: NOKIA TECHNOLOGIES OY
Reel/Frame 035544/0772 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2008
From: RIDGE, JUSTIN; WANG, XIANGLIN
To: NOKIA CORPORATION
Reel/Frame 021030/0736 →