Palette predictor signaling with run length code for video coding
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.
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.