IP Library Granted Patent US 11,463,716
Granted Patent B2
US 11,463,716 · App. 17/185,093 · Granted Oct 4, 2022

Buffers for video coding in palette mode

Inventors: Yasutomo Matsuba (San Diego, CA); David Chu (Cupertino, CA)
Assignee: Qualcomm Incorporated
H04N19/423H04N19/105H04N19/157H04N19/176H04N19/186H04N19/91
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 11,463,716
App. No.
17/185,093
Granted
Oct 4, 2022
Kind
B2
Abstract

An example apparatus includes a first line buffer and a second line buffer, where each memory location in the first line buffer and the second line buffer corresponds to a row or column of a palette token block. The first line buffer may store two of the neighboring palette token values (e.g., above and left palette token values), and the second line buffer may store one of the neighboring palette token value (e.g., above-left). As a video coder is coding palette token values, the video coder may shift values stored in the first line buffer to the overwrite a memory location in the second line buffer, and overwrite values stored in the first line buffer based in part on the row or column of the palette token block to which the memory locations in the first and second line buffer correspond.

Claims (95)

1. An apparatus configured to code video data, the apparatus comprising:

a first line buffer, reserved in memory, configured to store a first palette token value of a first neighboring palette token to a current palette token of a palette token block of a current block in a first memory location of the first line buffer and configured to store a second palette token value of a second neighboring palette token to the current palette token of the palette token block of the current block in a second memory location of the first line buffer, wherein the first neighboring palette token and the second neighboring palette token are included in the palette token block and are adjacent to the current palette token in the palette token block;

a second line buffer, reserved in the memory, configured to store a third palette token value of a third neighboring palette token to the current palette token of the palette token block of the current block in a third memory location of the second line buffer, wherein the third neighboring palette token is included in the palette token block and is adjacent to the current palette token in the palette token block, wherein the first palette token value, the second palette token value, and the third palette token value are each an index into a list of palette colors for a palette predictor block used for palette mode coding the current block; and

one or more processors implemented in circuitry and in communication with the first line buffer and the second line buffer, the one or more processors configured to:

determine a row or a column of the current palette token in the palette token block;

determine a first address for the first memory location in the first line buffer, a second address for the second memory location in the first line buffer, and a third address for the third memory location in the second line buffer based on the row or column of the current palette token value in the palette token block;

access the first palette token value from the first line buffer based on the first address, the second palette token value from the first line buffer based on the second address, and the third token value from the second line buffer based on the third address; and

code a current palette token value for the current palette token based on the first palette token value, the second palette token value, and the third palette token value.

2. The apparatus of claim 1 , wherein the first line buffer includes a first plurality of memory locations that each correspond to a row or a column of the palette token block, and wherein the second line buffer includes a second plurality of memory locations that each correspond to the row or the column of the palette token block.

3. The apparatus of claim 1 , wherein a number of memory locations in the first line buffer and the second line buffer is equal to a number of rows or columns of the palette token block that includes palette token values that are indices into the list of palette colors for the palette predictor block.

4. The apparatus of claim 1 , wherein the one or more processors are configured to access the first palette token value and the second palette token value from the first line buffer and the third token value from the second line buffer in parallel with coding a previous palette token value.

5. The apparatus of claim 1 , wherein the one or more processors are configured to, subsequent to accessing the first palette token value and the second palette token value from the first line buffer and the third token value from the second line buffer:

store the first palette token value, stored in the first memory location of the first line buffer, into the third memory location of the second line buffer overwriting the third palette token value; and

store a previous palette token value into the first memory location of the first line buffer overwriting the first palette token value.

6. The apparatus of claim 1 , wherein to code, the one or more processors are configured to:

determine one or more probability values for coding the current palette token value based on the first palette token value, the second palette token value, and the third palette token value; and

code the current palette token value based on the determined one or more probability values.

7. The apparatus of claim 1 , wherein to code, the one or more processors are configured to decode the current palette token, and wherein the one or more processors are further configured to:

generate the palette predictor block based on the current palette token value, the first palette token value, the second palette token value, and the third palette token value;

receive information indicative of a residual between the current block and the palette predictor block; and

reconstruct the current block based on received information and the palette predictor block.

8. The apparatus of claim 7 , further comprising a display configured to display the reconstructed current block.

9. The apparatus of claim 1 , wherein the one or more processors are configured to:

generate the palette predictor block;

determine information indicative of a residual between the current block and the palette predictor block;

determine the current palette token value, the first palette token value, the second palette token value, and the third palette token value based on the palette predictor block, wherein to code, the one or more processors are configured to encode the current palette token value based on the first palette token value, the second palette token value, and the third palette token value; and

signal the information indicative of the residual and a result of the encoding.

10. The apparatus of claim 9 , further comprising a camera configured to capture a picture that includes the current block.

11. The apparatus of claim 1 , wherein the apparatus comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

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

storing, in a first line buffer reserved in memory, a first palette token value of a first neighboring palette token to a current palette token of a palette token block of a current block in a first memory location of the first line buffer and a second palette token value of a second neighboring palette token to the current palette token of the palette token block of the current block in a second memory location of the first line buffer, wherein the first neighboring palette token and the second neighboring palette token are included in the palette token block and are adjacent to the current palette token in the palette token block;

storing, in a second line buffer reserved in the memory, a third palette token value of a third neighboring palette token to the current palette token of the palette token block of the current block in a third memory location of the second line buffer, wherein the third neighboring palette token is included in the palette token block and is adjacent to the current palette token in the palette token block, wherein the first palette token value, the second palette token value, and the third palette token value are each an index into a list of palette colors for a palette predictor block used for palette mode coding the current block;

determining a row or a column of the current palette token in the palette token block;

determining a first address for the first memory location in the first line buffer, a second address for the second memory location in the first line buffer, and a third address for the third memory location in the second line buffer based on the row or column of the current palette token value in the palette token block;

accessing the first palette token value from the first line buffer based on the first address, the second palette token value from the first line buffer based on the second address, and the third token value from the second line buffer based on the third address; and

coding a current palette token value for the current palette token based on the first palette token value, the second palette token value, and the third palette token value.

13. The method of claim 12 , wherein the first line buffer includes a first plurality of memory locations that each correspond to a row or a column of the palette token block, and wherein the second line buffer includes a second plurality of memory locations that each correspond to the row or the column of the palette token block.

14. The method of claim 12 , wherein a number of memory locations in the first line buffer and the second line buffer is equal to a number of rows or columns of the palette token block that includes palette token values that are indices into the list of palette colors for the palette predictor block.

15. The method of claim 12 , wherein accessing the first palette token value and the second palette token value from the first line buffer and the third token value from the second line buffer comprises accessing the first palette token value and the second palette token value from the first line buffer and the third token value from the second line buffer in parallel with coding a previous palette token value.

16. The method of claim 12 , further comprising, subsequent to accessing the first palette token value and the second palette token value from the first line buffer and the third token value from the second line buffer:

storing the first palette token value, stored in the first memory location of the first line buffer, into the third memory location of the second line buffer overwriting the third palette token value; and

storing a previous palette token value into the first memory location of the first line buffer overwriting the first palette token value.

17. The method of claim 12 , wherein coding comprises:

determining one or more probability values for coding the current palette token value based on the first palette token value, the second palette token value, and the third palette token value; and

coding the current palette token value based on the determined one or more probability values.

18. The method of claim 12 , wherein coding comprises decoding the current palette token, the method further comprising:

generating the palette predictor block based on the current palette token value, the first palette token value, the second palette token value, and the third palette token value;

receiving information indicative of a residual between the current block and the palette predictor block; and

reconstructing the current block based on received information and the palette predictor block.

19. The method of claim 12 , further comprising:

generating the palette predictor block;

determining information indicative of a residual between the current block and the palette predictor block;

determining the current palette token value, the first palette token value, the second palette token value, and the third palette token value based on the palette predictor block, wherein coding comprises encoding the current palette token value based on the first palette token value, the second palette token value, and the third palette token value; and

signaling the information indicative of the residual and a result of the encoding.

20. A device of coding video data, the device comprising:

means for storing, in a first line buffer reserved in memory, a first palette token value of a first neighboring palette token to a current palette token of a palette token block of a current block in a first memory location of the first line buffer and configured to store a second palette token value of a second neighboring palette token to the current palette token of the palette token block of the current block in a second memory location of the first line buffer, wherein the first neighboring palette token and the second neighboring palette token are included in the palette token block and are adjacent to the current palette token in the palette token block;

means for storing, in a second line buffer reserved in the memory, a third palette token value of a third neighboring palette token to the current palette token of the palette token block of the current block in a third memory location of the second line buffer, wherein the third neighboring palette token is included in the palette token block and is adjacent to the current palette token in the palette token block, wherein the first palette token value, the second palette token value, and the third palette token value are each an index into a list of palette colors for a palette predictor block used for palette mode coding the current block;

means for determining a row or a column of the current palette token in the palette token block;

means for determining a first address for the first memory location in the first line buffer, a second address for the second memory location in the first line buffer, and a third address for the third memory location in the second line buffer based on the row or column of the current palette token value in the palette token block;

means for accessing the first palette token value from the first line buffer based on the first address, the second palette token value from the first line buffer based on the second address, and the third token value from the second line buffer based on the third address; and

means for coding the current palette token value for the current palette token based on the first palette token value, the second palette token value, and the third palette token value.

21. A non-transitory computer-readable storage medium storing instructions thereon that when executed cause one or more processors to:

store, in a first line buffer reserved in memory, a first palette token value of a first neighboring palette token to a current palette token of a palette token block of a current block in a first memory location of the first line buffer and configured to store a second palette token value of a second neighboring palette token to the current palette token of the palette token block of the current block in a second memory location of the first line buffer, wherein the first neighboring palette token and the second neighboring palette token are included in the palette token block and are adjacent to the current palette token in the palette token block;

store, in a second line buffer reserved in the memory, a third palette token value of a third neighboring palette token to the current palette token of the palette token block of the current block in a third memory location of the second line buffer, wherein the third neighboring palette token is included in the palette token block and is adjacent to the current palette token in the palette token block, wherein the first palette token value, the second palette token value, and the third palette token value are each an index into a list of palette colors for a palette predictor block used for palette mode coding the current block;

determine a row or a column of the current palette token in the palette token block;

determine a first address for the first memory location in the first line buffer, a second address for the second memory location in the first line buffer, and a third address for the third memory location in the second line buffer based on the row or column of the current palette token value in the palette token block;

access the first palette token value from the first line buffer based on the first address, the second palette token value from the first line buffer based on the second address, and the third token value from the second line buffer based on the third address; and

code the current palette token value for the current palette token based on the first palette token value, the second palette token value, and the third palette token value.

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

a first line buffer, reserved in memory, configured to store a first palette token value of a first neighboring palette token to a current palette token of a palette token block of a current block in a first memory location of the first line buffer and configured to store a second palette token value of a second neighboring palette token to the current palette token of the palette token block of the current block in a second memory location of the first line buffer, wherein the first neighboring palette token and the second neighboring palette token are included in the palette token block and are adjacent to the current palette token in the palette token block;

a second line buffer, reserved in the memory, configured to store a third palette token value of a third neighboring palette token to the current palette token of the palette token block of the current block in a third memory location of the second line buffer, wherein the third neighboring palette token is included in the palette token block and is adjacent to the current palette token in the palette token block, wherein the first palette token value, the second palette token value, and the third palette token value are each an index into a list of palette colors for a palette predictor block used for palette mode coding the current block; and

one or more processors implemented in circuitry and in communication with the first line buffer and the second line buffer, the one or more processors configured to:

access the first palette token value and the second palette token value from the first line buffer and the third token value from the second line buffer;

code a current palette token value for the current palette token based on the first palette token value, the second palette token value, and the third palette token value; and

subsequent to accessing the first palette token value and the second palette token value from the first line buffer and the third token value from the second line buffer:

store the first palette token value, stored in the first memory location of the first line buffer, into the third memory location of the second line buffer overwriting the third palette token value; and

store a previous palette token value into the first memory location of the first line buffer overwriting the first palette token value.

23. The apparatus of claim 22 , wherein the first line buffer includes a first plurality of memory locations that each correspond to a row or a column of the palette token block, and wherein the second line buffer includes a second plurality of memory locations that each correspond to the row or the column of the palette token block.

24. The apparatus of claim 22 , wherein a number of memory locations in the first line buffer and the second line buffer is equal to a number of rows or columns of the palette token block that includes palette token values that are indices into the list of palette colors for the palette predictor block.

25. The apparatus of claim 22 , wherein the one or more processors are configured to access the first palette token value and the second palette token value from the first line buffer and the third token value from the second line buffer in parallel with coding a previous palette token value.

26. The apparatus of claim 22 , wherein to code, the one or more processors are configured to:

determine one or more probability values for coding the current palette token value based on the first palette token value, the second palette token value, and the third palette token value; and

code the current palette token value based on the determined one or more probability values.

27. The apparatus of claim 22 , wherein to code, the one or more processors are configured to decode the current palette token, and wherein the one or more processors are further configured to:

generate the palette predictor block based on the current palette token value, the first palette token value, the second palette token value, and the third palette token value;

receive information indicative of a residual between the current block and the palette predictor block; and

reconstruct the current block based on received information and the palette predictor block.

28. The apparatus of claim 27 , further comprising a display configured to display the reconstructed current block.

29. The apparatus of claim 22 , wherein the one or more processors are configured to:

generate the palette predictor block;

determine information indicative of a residual between the current block and the palette predictor block;

determine the current palette token value, the first palette token value, the second palette token value, and the third palette token value based on the palette predictor block, wherein to code, the one or more processors are configured to encode the current palette token value based on the first palette token value, the second palette token value, and the third palette token value; and

signal the information indicative of the residual and a result of the encoding.

30. The apparatus of claim 29 , further comprising a camera configured to capture a picture that includes the current block.

31. The apparatus of claim 22 , wherein the apparatus comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2021
From: MATSUBA, YASUTOMO; CHU, DAVID
To: QUALCOMM INCORPORATED
Reel/Frame 055536/0384 →
Continuity (1)
Related Publication 20220272367A1 · Aug 25, 2022
Cited By (2)
US 12,382,018 US 12,641,267