IP Library › Granted Patent US 10,362,336
Granted Patent B2
US 10,362,336 · App. 14/667,411 · Granted Jul 23, 2019

Palette predictor signaling with run length code for video coding

Inventors: Marta Karczewicz (San Diego, CA); Wei Pu (San Diego, CA); Vadim Seregin (San Diego, CA); Rajan Laxman Joshi (San Diego, CA); Joel Sole Rojals (La Jolla, CA); Feng Zou (San Diego, CA)
Assignee: QUALCOMM Incorporated
H04N19/93H04N19/27H04N19/593H04N19/176
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,362,336
App. No.
14/667,411
Filed
Mar 24, 2015
Granted
Jul 23, 2019
Kind
B2
Art Unit
2487
USPC
375/240.16
Abstract

Techniques for encoding a binary prediction vector for predicting a palette for palette-based video coding is described. In one example, a method of decoding video comprises receiving an encoded binary prediction vector for a current block of video data, decoding the encoded binary prediction vector using a run-length decoding technique, generating a palette for the current block of video data based on the binary prediction vector, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data, and decoding the current block of video data using the palette.

Claims (107)

1. A method of decoding video data, the method comprising:

receiving an encoded binary prediction vector for a current block of video data;

decoding the encoded binary prediction vector using a run-length decoding technique and a reserved run-length value L, the reserved run-length value L indicating an end-position of the binary prediction vector;

generating a palette for the current block of video data based on the binary prediction vector, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data; and

decoding the current block of video data using the palette.

2. The method of claim 1 , wherein decoding the encoded binary prediction vector comprises decoding the encoded binary prediction vector using an Exponential-Golomb decoding technique on a run-length sequence produced by the run-length decoding technique.

3. The method of claim 2 , wherein the Exponential Golomb decoding technique is a 0 th order Exponential-Golomb decoding technique.

4. The method of claim 1 , wherein the reserved run-length value L is 1.

5. The method of claim 1 , wherein decoding the encoded binary prediction vector comprises:

decoding the encoded binary prediction vector using the run-length decoding technique, the reserved run-length value L, and a maximum palette size, wherein the reserved run-length value L is not used if a total number of entries in the binary prediction vector that indicate that previously-used palette entries are reused for the palette for the current block of video data is equal to the maximum palette size.

6. The method of claim 1 , wherein decoding the encoded binary prediction vector comprises:

decoding the encoded binary prediction vector using the run-length decoding technique, and the reserved run-length value L, wherein the reserved run-length value L is not used if a last run-length in the encoded binary prediction vector does not indicate a run-length of zero.

7. The method of claim 1 , wherein generating the palette for the current block of video data based on the binary prediction vector comprises:

copying, from a buffer, previously-used palette entries into the palette that are indicated as being reused for the palette by the binary prediction vector; and

receiving, in the case that the number of previously-used palette entries copied for the palette is less than a maximum palette size, additional palette entries.

8. The method of claim 7 , further comprising:

storing the previously-used palette entries for one or more previously-decoded blocks of video data in the buffer.

9. The method of claim 8 , further comprising:

removing duplicate entries of the previously-used palette entries stored in the buffer.

10. The method of claim 8 , wherein the previously-used palette entries for the one or more previously-decoded blocks of video data comprise previously-used palette entries for a line of pixels above the current block of video data and previously-used palette entries for a line of pixels to the left of the current block of video data.

11. The method of claim 1 , wherein the run-length decoding technique comprises coding a run-length of zeros.

12. A method of encoding video data, the method comprising:

generating a palette for the current block of video data;

generating a binary prediction vector for the palette for the current block of video data, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data;

encoding the binary prediction vector using a run-length encoding technique and a reserved run-length value L, the reserved run-length value L indicating an end-position of the binary prediction vector; and

encoding the current block of video data using the palette.

13. The method of claim 12 , wherein encoding the binary prediction vector comprises encoding the binary prediction vector using an Exponential-Golomb encoding technique on a run-length sequence produced by the run-length encoding technique.

14. The method of claim 13 , wherein the Exponential Golomb encoding technique is a 0 th order Exponential-Golomb encoding technique.

15. The method of claim 12 , where in the reserved run-length value L is 1.

16. The method of claim 12 , wherein encoding the binary prediction vector comprises:

encoding the binary prediction vector using the run-length encoding technique, the reserved run-length value L, and a maximum palette size, wherein the reserved run-length value L is not used if a total number of entries in the binary prediction vector that indicate that previously-used palette entries are reused for the palette for the current block of video data is equal to the maximum palette size.

17. The method of claim 12 , wherein encoding the binary prediction vector comprises:

encoding the binary prediction vector using the run-length encoding technique, and the reserved run-length value L wherein the reserved run-length value L is not used if a last run-length in the encoded binary prediction vector does not indicate a run-length of zero.

18. The method of claim 12 , further comprising:

storing the previously-used palette entries for one or more previously-encoded blocks of video data in a buffer.

19. The method of claim 18 , further comprising:

removing duplicate entries of the previously-used palette entries stored in the buffer.

20. The method of claim 18 , wherein the previously-used palette entries for the one or more previously-encoded blocks of video data comprise previously-used palette entries for a line of pixels above the current block of video data and previously-used palette entries for a line of pixels to the left of the current block of video data.

21. The method of claim 12 , wherein the run-length encoding technique comprises coding a run-length of zeros.

22. An apparatus configured to decode video data, the apparatus comprising:

a memory configured to store the video data; and

a video decoder in communication with the memory, the video decoder configured to:

receive an encoded binary prediction vector for a current block of the video data;

decode the encoded binary prediction vector using a run-length decoding technique and a reserved run-length value L, the reserved run-length value L indicating an end-position of the binary prediction vector;

generate a palette for the current block of video data based on the binary prediction vector, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data; and

decode the current block of video data using the palette.

23. The apparatus of claim 22 , wherein to decode the encoded binary prediction vector, the video decoder is further configured to:

decode the encoded binary prediction vector using an Exponential-Golomb decoding technique on a run-length sequence produced by the run-length decoding technique.

24. The apparatus of claim 23 , wherein the Exponential Golomb decoding technique is a 0 th order Exponential-Golomb decoding technique.

25. The apparatus of claim 22 , where in the reserved run-length value L is 1.

26. The apparatus of claim 22 , wherein to decode the encoded binary prediction vector, the video decoder is further configured to:

decode the encoded binary prediction vector using the run-length decoding technique, the reserved run-length value L, and a maximum palette size, wherein the reserved run-length value L is not used if a total number of entries in the binary prediction vector that indicate that previously-used palette entries are reused for the palette for the current block of video data is equal to the maximum palette size.

27. The apparatus of claim 22 , wherein to decode the encoded binary prediction vector, the video decoder is further configured to:

decode the encoded binary prediction vector using the run-length decoding technique, and the reserved run-length value L, wherein the reserved run-length value L is not used if a last run-length in the encoded binary prediction vector does not indicate a run-length of zero.

28. The apparatus of claim 22 , wherein to generate the palette for the current block of video data based on the binary prediction vector, the video decoder is further configured to:

copy, from a buffer, previously-used palette entries into the palette that are indicated as being reused for the palette by the binary prediction vector; and

receive, in the case that the number of previously-used palette entries copied for the palette is less than a maximum palette size, additional palette entries.

29. The apparatus of claim 28 , wherein the video decoder is further configured to:

store the previously-used palette entries for one or more previously-decoded blocks of video data in the buffer.

30. The apparatus of claim 29 , wherein the video decoder is further configured to:

remove duplicate entries of the previously-used palette entries stored in the buffer.

31. The apparatus of claim 29 , wherein the previously-used palette entries for the one or more previously-decoded blocks of video data comprise previously-used palette entries for a line of pixels above the current block of video data and previously-used palette entries for a line of pixels to the left of the current block of video data.

32. The apparatus of claim 22 , wherein the run-length decoding technique comprises coding a run-length of zeros.

33. The apparatus of claim 22 , further comprising:

a display configured to display a picture including the decoded current block of the video data.

34. An apparatus configured to encode video data, the apparatus comprising:

a memory configured to store the video data; and

a video encoder in communication with the memory, the video encoder configured to:

generate a palette for a current block of the video data;

generate a binary prediction vector for the palette for the current block of video data, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data;

encode the binary prediction vector using a run-length encoding technique and a reserved run-length value L, the reserved run-length value L indicating an end-position of the binary prediction vector; and

encode the current block of video data using the palette.

35. The apparatus of claim 34 , wherein to encode the binary prediction vector, the video encoder is further configured to:

encode the binary prediction vector using an Exponential-Golomb encoding technique on a run-length sequence produced by the run-length encoding technique.

36. The apparatus of claim 35 , wherein the Exponential Golomb encoding technique is a 0 th order Exponential-Golomb encoding technique.

37. The apparatus of claim 34 , where in the reserved run-length value L is 1.

38. The apparatus of claim 34 , wherein to encode the binary prediction vector, the video encoder is further configured to:

encode the binary prediction vector using the run-length encoding technique, the reserved run-length value L, and a maximum palette size, wherein the reserved run-length value L is not used if a total number of entries in the binary prediction vector that indicate that previously-used palette entries are reused for the palette for the current block of video data is equal to the maximum palette size.

39. The apparatus of claim 34 , wherein to encode the binary prediction vector, the video encoder is further configured to:

encode the binary prediction vector using the run-length encoding technique, and the reserved run-length value L, wherein the reserved run-length value L is not used if a last run-length in the encoded binary prediction vector does not indicate a run-length of zero.

40. The apparatus of claim 34 , wherein the video encoder is further configured to:

store the previously-used palette entries for one or more previously-encoded blocks of video data in a buffer.

41. The apparatus of claim 40 , wherein the video encoder is further configured to:

remove duplicate entries of the previously-used palette entries stored in the buffer.

42. The apparatus of claim 40 , wherein the previously-used palette entries for the one or more previously-encoded blocks of video data comprise previously-used palette entries for a line of pixels above the current block of video data and previously-used palette entries for a line of pixels to the left of the current block of video data.

43. The apparatus of claim 34 , wherein the run-length encoding technique comprises coding a run-length of zeros.

44. The apparatus of claim 34 , further comprising:

a camera configured to capture the video data.

45. An apparatus configured to decode video data, the apparatus comprising:

means for receiving an encoded binary prediction vector for a current block of video data;

means for decoding the encoded binary prediction vector using a run-length decoding technique and a reserved run-length value L, the reserved run-length value L indicating an end-position of the binary prediction vector;

means for generating a palette for the current block of video data based on the binary prediction vector, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data; and

means for decoding the current block of video data using the palette.

46. An apparatus configured to encode video data, the apparatus comprising:

means for generating a palette for the current block of video data;

means for generating a binary prediction vector for the palette for the current block of video data, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data;

means for encoding the binary prediction vector using a run-length encoding technique and a reserved run-length value L, the reserved run-length value L indicating an end-position of the binary prediction vector; and

means for encoding the current block of video data using the palette.

47. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors of a device configured to decode video data to:

receive an encoded binary prediction vector for a current block of the video data;

decode the encoded binary prediction vector using a run-length decoding technique and a reserved run-length value L, the reserved run-length value L indicating an end-position of the binary prediction vector;

generate a palette for the current block of video data based on the binary prediction vector, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data; and

decode the current block of video data using the palette.

48. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors of a device configured to encode video data to: generate a palette for a current block of the video data;

generate a binary prediction vector for the palette for the current block of video data, the binary prediction vector comprising entries indicating whether or not previously-used palette entries are reused for the palette for the current block of video data;

encode the binary prediction vector using a run-length encoding technique and a reserved run-length value L, the reserved run-length value L indicating an end-position of the binary prediction vector; and

encode the current block of video data using the palette.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2015
From: KARCZEWICZ, MARTA; PU, WEI; SEREGIN, VADIM; JOSHI, RAJAN LAXMAN; SOLE ROJALS, JOEL; ZOU, FENG
To: QUALCOMM INCORPORATED
Reel/Frame 035363/0566 →
Continuity (7)
Provisional Application 61970257 · Mar 25, 2014
Provisional Application 61981105 · Apr 17, 2014
Provisional Application 62002668 · May 23, 2014
Provisional Application 62015327 · Jun 20, 2014
Provisional Application 62018461 · Jun 27, 2014
Provisional Application 62041119 · Aug 24, 2014
Related Publication 20150281728A1 · Oct 1, 2015
Cited By (1)
US 12,294,722