IP Library Granted Patent US 9,986,248
Granted Patent B2
US 9,986,248 · App. 15/004,508 · Granted May 29, 2018

Palette mode coding for video coding

Inventors: Wei Pu (Pittsburgh, PA); Marta Karczewicz (San Diego, CA); Rajan Laxman Joshi (San Diego, CA); Feng Zou (San Diego, CA); Vadim Seregin (San Diego, CA)
Assignee: QUALCOMM Incorporated
H04N19/176H04N19/593H04N19/70
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,986,248
App. No.
15/004,508
Granted
May 29, 2018
Kind
B2
Abstract

Receiving a plurality of syntax elements that are indicative of a palette that was used to encode a block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in the encoded video bitstream, wherein the first syntax element is encoded using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits, decoding the plurality of syntax elements, including decoding the first syntax element using the one or more Golomb codes, reconstructing the palette based on the decoded plurality of syntax elements, and decoding the block of video data using the reconstructed palette.

Claims (104)

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

receiving a block of video data in an encoded video bitstream, the block of video data having been encoded using a palette-based coding mode;

receiving a plurality of syntax elements that are indicative of a palette that was used to encode the block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in the encoded video bitstream, wherein a maximum value of the first syntax element is defined relative to one or more of a second syntax element that indicates a maximum size of the palette or a third syntax element that indicates a maximum size of a palette predictor, wherein the second syntax element has a value from 0 to a first threshold and the third syntax element has a value from 0 to a second threshold, and encoded using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits;

decoding the plurality of syntax elements, including decoding the first syntax element using the one or more Golomb codes;

reconstructing the palette based on the decoded plurality of syntax elements; and

decoding the block of video data using the reconstructed palette.

2. The method of claim 1 , wherein the first syntax element is a num_signalled_palette_entries syntax element.

3. The method of claim 1 , wherein the predetermined maximum number of bits is 32, and wherein the one or more Golomb codes is an exponential Golomb code of order 0.

4. The method of claim 1 , wherein the predetermined maximum number of bits is 32, and wherein the one or more Golomb codes is a concatenation of a truncated Rice code and an exponential Golomb code.

5. The method of claim 1 , wherein the plurality of syntax elements includes the palette values indicated as being explicitly signaled by the first syntax element.

6. The method of claim 1 , wherein the maximum value of the first syntax element is defined relative to both of the second syntax element that indicates the maximum size of the palette and the third syntax element that indicates the maximum size of the palette predictor.

7. The method of claim 1 , wherein the first threshold is one of 4095 or 4096 and the second threshold is one of 4095, 8191, or 8192.

8. The method of claim 1 , wherein the maximum value of the first syntax element is defined relative to both of the second syntax element that indicates a maximum size of the palette and the third syntax element that indicates a maximum size of the palette predictor, the method further comprising:

defining the second syntax element to be less than or equal to a number of pixels in a largest possible block of the video data in the encoded video bitstream; and

defining the third syntax element to be less than or equal to K*a value of the second syntax element, where K is a positive constant and * indicates a multiplication operation.

9. The method of claim 8 , wherein K is 2.

10. The method of claim 1 , further comprising:

displaying the decoded block of video data.

11. The method of claim 1 , further comprising:

receiving a syntax element indicating a palette run type in the case that a current pixel of the block of video data is not a first pixel in a scanning order of the block of video data; and

inferring the syntax element as indicating a palette run type in the case that the current pixel is the first pixel in the scanning order.

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

a memory configured to store an encoded video bitstream; and

a video decoder configured to:

receive a block of video data in the encoded video bitstream, the block of video data having been encoded using a palette-based coding mode;

receive a plurality of syntax elements that are indicative of a palette that was used to encode the block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in the encoded video bitstream, wherein a maximum value of the first syntax element is defined relative to one or more of a second syntax element that indicates a maximum size of the palette or a third syntax element that indicates a maximum size of a palette predictor, wherein the second syntax element has a value from 0 to a first threshold and the third syntax element has a value from 0 to a second threshold, and encoded using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits;

decode the plurality of syntax elements, including decoding the first syntax element using the one or more Golomb codes;

reconstruct the palette based on the decoded plurality of syntax elements; and

decode the block of video data using the reconstructed palette.

13. The apparatus of claim 12 , wherein the first syntax element is a num_signalled_palette_entries syntax element.

14. The apparatus of claim 12 , wherein the predetermined maximum number of bits is 32, and wherein the one or more Golomb codes is an exponential Golomb code of order 0.

15. The apparatus of claim 12 , wherein the predetermined maximum number of bits is 32, and wherein the one or more Golomb codes is a concatenation of a truncated Rice code and an exponential Golomb code.

16. The apparatus of claim 12 , wherein the plurality of syntax elements includes the palette values indicated as being explicitly signaled by the first syntax element.

17. The apparatus of claim 12 , wherein the maximum value of the first syntax element is defined relative to both of the second syntax element that indicates the maximum size of the palette and the third syntax element that indicates the maximum size of a palette predictor.

18. The apparatus of claim 12 , wherein the first threshold is one of 4095 or 4096 and the second threshold is one of 4095, 8191, or 8192.

19. The apparatus of claim 12 , wherein the maximum value of the first syntax element is defined relative to both of the second syntax element that indicates a maximum size of the palette and the third syntax element that indicates a maximum size of the palette predictor, and wherein the video decoder is further configured to:

define the second syntax element to be less than or equal to a number of pixels in a largest possible block of the video data in the encoded video bitstream; and

define the third syntax element to be less than or equal to K*a value of the second syntax element, where K is a positive constant and * indicates a multiplication operation.

20. The apparatus of claim 19 , wherein K is 2.

21. The apparatus of claim 12 , further comprising:

a display configured to display the decoded block of video data.

22. The apparatus of claim 12 , wherein the video decoder is further configured to:

receive a syntax element indicating a palette run type in the case that a current pixel of the block of video data is not a first pixel in a scanning order of the block of video data; and

infer the syntax element as indicating a palette run type in the case that the current pixel is the first pixel in the scanning order.

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

means for receiving a block of video data in an encoded video bitstream, the block of video data having been encoded using a palette-based coding mode;

means for receiving a plurality of syntax elements that are indicative of a palette that was used to encode the block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in the encoded video bitstream, wherein a maximum value of the first syntax element is defined relative to one or more of a second syntax element that indicates a maximum size of the palette or a third syntax element that indicates a maximum size of a palette predictor, wherein the second syntax element has a value from 0 to a first threshold and the third syntax element has a value from 0 to a second threshold, and encoded using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits;

means for decoding the plurality of syntax elements, including decoding the first syntax element using the one or more Golomb codes;

means for reconstructing the palette based on the decoded plurality of syntax elements; and

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

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

receive a block of video data in an encoded video bitstream, the block of video data having been encoded using a palette-based coding mode;

receive a plurality of syntax elements that are indicative of a palette that was used to encode the block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in the encoded video bitstream, wherein a maximum value of the first syntax element is defined relative to one or more of a second syntax element that indicates a maximum size of the palette or a third syntax element that indicates a maximum size of a palette predictor, wherein the second syntax element has a value from 0 to a first threshold and the third syntax element has a value from 0 to a second threshold, and encoded using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits;

decode the plurality of syntax elements, including decoding the first syntax element using the one or more Golomb codes;

reconstruct the palette based on the decoded plurality of syntax elements; and

decode the block of video data using the reconstructed palette.

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

encoding a block of video data using a palette and a palette-based coding mode;

generating a plurality of syntax elements that are indicative of the palette that was used to encode the block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in an encoded video bitstream;

encoding the first syntax element using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits, wherein a maximum value of the first syntax element is defined relative to one or more of a second syntax element that indicates a maximum size of the palette or a third syntax element that indicates a maximum size of a palette predictor, wherein the second syntax element has a value from 0 to a first threshold and the third syntax element has a value from 0 to a second threshold; and

including the plurality of syntax elements in the encoded video bitstream.

26. The method of claim 25 , wherein the first syntax element is a num_signalled_palette_entries syntax element.

27. The method of claim 25 , wherein the predetermined maximum number of bits is 32, and wherein the one or more Golomb codes is an exponential Golomb code of order 0.

28. The method of claim 25 , wherein the predetermined maximum number of bits is 32, and wherein the one or more Golomb codes is a concatenation of a truncated Rice code and an exponential Golomb code.

29. The method of claim 25 , wherein the plurality of syntax elements includes the palette values indicated as being explicitly signaled by the first syntax element.

30. The method of claim 25 , wherein the maximum value of the first syntax element is defined relative to both of the second syntax element that indicates the maximum size of the palette and the third syntax element that indicates the maximum size of a palette predictor.

31. The method of claim 25 , wherein the first threshold is one of 4095 or 4096 and the second threshold is one of 4095, 8191, or 8192.

32. The method of claim 25 , wherein the maximum value of the first syntax element is defined relative to both of the second syntax element that indicates a maximum size of the palette and the third syntax element that indicates a maximum size of the palette predictor, the method further comprising:

defining the second syntax element to be less than or equal to a number of pixels in a largest possible block of the video data in the encoded video bitstream; and

defining the third syntax element to be less than or equal to K*a value of the second syntax element, where K is a positive constant and * indicates a multiplication operation.

33. The method of claim 32 , wherein K is 2.

34. The method of claim 25 , further comprising:

signaling a syntax element indicating a palette run type in the case that a current pixel is not a first pixel in a scanning order; and

not signaling the syntax element indicating a palette run type in the case that the current pixel of the block of video data is the first pixel in the scanning order of the block of video data.

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

a memory configured to store a block of video data; and

a video encoder configured to:

encode the block of video data using a palette and a palette-based coding mode;

generate a plurality of syntax elements that are indicative of the palette that was used to encode the block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in an encoded video bitstream;

encode the first syntax element using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits, wherein a maximum value of the first syntax element is defined relative to one or more of a second syntax element that indicates a maximum size of the palette or a third syntax element that indicates a maximum size of a palette predictor, wherein the second syntax element has a value from 0 to a first threshold and the third syntax element has a value from 0 to a second threshold; and

include the plurality of syntax elements in the encoded video bitstream.

36. The apparatus of claim 35 , wherein the first syntax element is a num_signalled_palette_entries syntax element.

37. The apparatus of claim 35 , wherein the predetermined maximum number of bits is 32, and wherein the one or more Golomb codes is an exponential Golomb code of order 0.

38. The apparatus of claim 35 , wherein the predetermined maximum number of bits is 32, and wherein the one or more Golomb codes is a concatenation of a truncated Rice code and an exponential Golomb code.

39. The apparatus of claim 35 , wherein the plurality of syntax elements includes the palette values indicated as being explicitly signaled by the first syntax element.

40. The apparatus of claim 35 , wherein the maximum value of the first syntax element is defined relative to both of the second syntax element that indicates the maximum size of the palette and the third syntax element that indicates the maximum size of a palette predictor.

41. The apparatus of claim 35 , wherein the first threshold is one of 4095 or 4096 and the second threshold is one of 4095, 8191, or 8192.

42. The apparatus of claim 35 , wherein the maximum value of the first syntax element is defined relative to both of the second syntax element that indicates a maximum size of the palette and the third syntax element that indicates a maximum size of the palette predictor, and wherein the video encoder is further configured to:

define the second syntax element to be less than or equal to a number of pixels in a largest possible block of the video data in the encoded video bitstream; and

define the third syntax element to be less than or equal to K*a value of the second syntax element, where K is a positive constant and * indicates a multiplication operation.

43. The apparatus of claim 42 , wherein K is 2.

44. The apparatus of claim 35 , wherein the video encoder is further configured to:

signal a syntax element indicating a palette run type in the case that a current pixel is not a first pixel in a scanning order; and

not signal the syntax element indicating a palette run type in the case that the current pixel of the block of video data is the first pixel in the scanning order of the block of video data.

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

means for encoding a block of video data using a palette and a palette-based coding mode;

means for generating a plurality of syntax elements that are indicative of the palette that was used to encode the block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in an encoded video bitstream;

means for encoding the first syntax element using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits, wherein a maximum value of the first syntax element is defined relative to one or more of a second syntax element that indicates a maximum size of the palette or a third syntax element that indicates a maximum size of a palette predictor, wherein the second syntax element has a value from 0 to a first threshold and the third syntax element has a value from 0 to a second threshold; and

means for including the plurality of syntax elements in the encoded video bitstream.

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

encode a block of video data using a palette and a palette-based coding mode;

generate a plurality of syntax elements that are indicative of the palette that was used to encode the block of video data, the plurality of syntax elements including a first syntax element that indicates a number of palette values for the palette that are explicitly signaled in an encoded video bitstream;

encode the first syntax element using one or more Golomb codes such that the length of the encoded first syntax element is less than or equal to a predetermined maximum number of bits, wherein a maximum value of the first syntax element is defined relative to one or more of a second syntax element that indicates a maximum size of the palette or a third syntax element that indicates a maximum size of a palette predictor, wherein the second syntax element has a value from 0 to a first threshold and the third syntax element has a value from 0 to a second threshold; and

include the plurality of syntax elements in the encoded video bitstream.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2016
From: PU, WEI; KARCZEWICZ, MARTA; JOSHI, RAJAN LAXMAN; ZOU, FENG; SEREGIN, VADIM
To: QUALCOMM INCORPORATED
Reel/Frame 038074/0605 →
Continuity (2)
Provisional Application 62109568 · Jan 29, 2015
Related Publication 20160227239A1 · Aug 4, 2016