IP Library › Granted Patent US 12,015,790
Granted Patent B2
US 12,015,790 · App. 15/736,653 · Granted Jun 18, 2024

Encoder, decoder and method employing palette compression

Inventor: Ossi Kalevo (Akaa, FI)
Assignee: GURULOGIC MICROSYSTEMS OY
H04N19/186H04N19/463H04N19/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 12,015,790
App. No.
15/736,653
Granted
Jun 18, 2024
Kind
B2
Abstract

A method of encoding input data to generate corresponding encoded data is provided. The method includes encoding the input data into a plurality of symbols in the encoded data, wherein the plurality of symbols represent data as defined by at least one palette included in the encoded data. The method further includes compressing data representative of the at least one palette into compressed palette data in a lossless manner for inclusion into the encoded data, wherein palette entry values of the at least one palette are provided consecutively within the encoded data.

Claims (37)

1. A method of encoding input data to generate corresponding encoded data, wherein the method includes:

(i) encoding the input data, using at least one palette, into a plurality of symbols in the encoded data, wherein the plurality of symbols represent data as defined by the input data and the at least one palette, and each palette of the at least one palette includes a respective set of palette entry values and a corresponding set of indices, each index in the corresponding set of indices associated with a corresponding palette entry value of the respective set of palette entry values; and

(ii) compressing, for each palette of the at least one palette, the respective set of palette entry values into a corresponding compressed palette in a lossless manner for inclusion into the encoded data, wherein the corresponding compressed palette includes the respective set of palette entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, the specific order allowing a decoder device to deduce the corresponding set of indices associated with the respective set of palette entry values, wherein the compressing comprises: compressing a plurality of channels of the palette, wherein the corresponding compressed palette includes, for each channel of the plurality of channels, a corresponding set of channel entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, and wherein the encoded data includes availability data indicative of combinations of channel entry values used to encode the input data.

2. The method of claim 1 , characterized in that the method includes generating the corresponding compressed palette in a dynamically changing format depending upon content or data structure present in the input data, during encoding of the input data.

3. The method of claim 1 , characterized in that the availability information is represented by way of at least one of: ordinal numbers of used or unused combinations, bits.

4. A method of decoding encoded data to generate corresponding decoded data, wherein the method includes:

decompressing each compressed palette of at least one compressed palette included in the encoded data to determine a respective set of palette entry values, each compressed palette including the respective set of palette entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, wherein the compressed palette includes a plurality of channels and the corresponding compressed palette includes, for each channel of the plurality of channels, a corresponding set of channel entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, and wherein the encoded data includes availability data indicative of combinations of channel entry values to be used to decode the encoded data;

deducing, for each compressed palette of the at least one compressed palette, based on the specific order of the respective set of palette entry values, the corresponding set of indices, wherein for each compressed palette of the at least one compressed palette a corresponding decompressed palette is defined using the respective set of palette entry values and the deduced corresponding set of indices; and

employing at least one decompressed palette to decode a plurality of symbols in the encoded data to generate the decoded data, the plurality of symbols representing data defined by input data.

5. The method of claim 4 , characterized in that the method includes generating the decompressed palette in a dynamically changing format during decoding of the encoded data.

6. The method of claim 1 , characterized in that the availability information is represented by way of at least one of: ordinal numbers of used or unused combinations, bits.

7. An encoder device, including a memory and at least one processor, for encoding input data to generate corresponding encoded data, wherein the encoder device is operable to:

encode, using at least one palette, the input data into a plurality of symbols in the encoded data, wherein the plurality of symbols represent data as defined by the input data and the at least one palette, and each palette of the at least one palette includes a respective set of palette entry values and a corresponding set of indices, each index in the corresponding set of indices associated with a corresponding palette entry value of the respective set of palette entry values; and

compress, for each palette of the at least one palette, the respective set of palette entry values into a corresponding compressed palette in a lossless manner for inclusion into the encoded data, wherein the corresponding compressed palette includes the respective set of palette entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, the specific order allowing a decoder device to deduce the corresponding set of indices associated with the respective set of palette entry values, wherein the compressing comprises: compressing a plurality of channels of the palette, wherein the corresponding compressed palette includes, for each channel of the plurality of channels, a corresponding set of channel entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, and wherein the encoded data includes availability data indicative of combinations of channel entry values used to encode the input data.

8. The encoder device of claim 7 , characterized in that the encoder device is operable to generate the corresponding compressed palette in a dynamically changing format depending upon content or data structure present in the input data, during encoding of the input data.

9. The encoder device of claim 8 , characterized in that the availability information is represented by way of at least one of: ordinal numbers of used or unused combinations, bits.

10. A decoder device, including a memory and at least one processor, for decoding encoded data to generate corresponding decoded data, wherein the decoder device is operable to:

decompress each compressed palette of at least one compressed palette included in the encoded data to determine a respective set of palette entry values, each compressed palette including the respective set of palette entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, wherein the compressed palette includes a plurality of channels and the corresponding compressed palette includes, for each channel of the plurality of channels, a corresponding set of channel entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, and wherein the encoded data includes availability data indicative of combinations of channel entry values to be used to decode the encoded data;

deduce, for each compressed palette of the at least one compressed palette, based on the specific order of the respective set of palette entry values, the corresponding set of indices, wherein for each compressed palette of the at least one compressed palette a decompressed palette is defined using the respective set of palette entry values and the deduced corresponding set of indices; and

employ at least one decompressed palette to decode a plurality of symbols in the encoded data to generate the decoded data, the plurality of symbols representing data as defined by input data.

11. The decoder device of claim 10 , characterized in that the decoder device is operable to generate the decompressed palette in a dynamically changing format during decoding of the encoded data.

12. The decoder device of claim 10 , characterized in that the availability information is represented by way of at least one of: ordinal numbers of used or unused combinations, bits.

13. A codec device including:

at least one encoder device including a first memory and at least one first processor, and at least one decoder device including a second memory and at least one second processor, the at least one encoder device for encoding input data to generate corresponding encoded data, wherein the at least one encoder device is operable to:

encode, using at least one palette, the input data into a plurality of symbols in the encoded data, wherein the plurality of symbols represent data as defined by input data and the at least one palette, and each palette of the at least one palette includes a respective set of palette entry values and a corresponding set of indices, each index in the corresponding set of indices associated with a corresponding palette entry value of the respective set of palette entry values; and

compress, for each palette of the at least one palette, the respective set of palette entry values into a corresponding compressed palette of at least one compressed palette in a lossless manner for inclusion into the encoded data, wherein the corresponding compressed palette includes the respective set of palette entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, the specific order allowing the at least one decoder device to deduce the index values of a the corresponding set of indices,

the at least one decoder device for decoding the encoded data to generate corresponding decoded data, wherein the at least one decoder device is operable to:

decompress, for each palette of the at least one palette, the corresponding compressed palette of the at least one compressed palette included in the encoded data to determine the respective set of palette entry values;

deduce, for each palette of the at least one palette, based on the specific order of the respective set of palette entry values, the corresponding set of indices, wherein for each palette of the at least one palette a decompressed palette is defined using the respective set of palette entry values and the deduced corresponding set of indices; and

employ the at least one palette to decode the plurality of symbols in the encoded data to generate the decoded data, the plurality of symbols representing the data defined by the input data,

wherein the compressing comprises: compressing a plurality of channels of the palette, wherein the corresponding compressed palette includes, for each channel of the plurality of channels, a corresponding set of channel entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, and wherein the encoded data includes availability data indicative of combinations of channel entry values used to encode the input data, and the decoder device is operable to use the availability data to decode the encoded data.

14. A computer program product comprising a non-transitory computer-readable storage medium having computer-readable instructions stored thereon, the computer-readable instructions being executable by a computerized device comprising processing hardware to execute a method comprising:

encoding, using at least one palette, input data to generate corresponding encoded data comprising a plurality of symbols, wherein the plurality of symbols represent data as defined by input data and the at least one palette, and each palette of the at least one palette includes a respective set of palette entry values and a corresponding set of indices, each index in the corresponding set of indices associated with a corresponding palette entry value of the respective set of palette entry values; and

compressing, for each palette of the at least one palette, the respective set of palette entry values into a corresponding compressed palette in a lossless manner for inclusion into the encoded data, wherein the corresponding compressed palette includes the respective set of palette entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, the specific order allowing a decoder device to deduce the corresponding set of indices associated with the respective set of palette entry values, wherein the compressing comprises: compressing a plurality of channels of the palette, wherein the corresponding compressed palette includes, for each channel of the plurality of channels, a corresponding set of channel entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, and wherein the encoded data includes availability data indicative of combinations of channel entry values used to encode the input data.

15. A computer program product comprising a non-transitory computer-readable storage medium having computer-readable instructions stored thereon, the computer-readable instructions when executed by one or more processors cause the one or more processors to:

decompress each compressed palette of at least one compressed palette included in the encoded data to determine a respective set of palette entry values, each compressed palette including the respective set of palette entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, wherein the compressed palette includes a plurality of channels and the corresponding compressed palette includes, for each channel of the plurality of channels, a corresponding set of channel entry values in compressed form, without the corresponding set of indices, arranged according to a specific order in a consecutively adjacent manner within the encoded data, and wherein the encoded data includes availability data indicative of combinations of channel entry values to be used to decode the encoded data;

deduce, for each compressed palette of the at least one compressed palette, based on the specific order of the respective set of palette entry values, the corresponding set of indices, wherein for each compressed palette of the at least one compressed palette a decompressed palette is defined using the respective set of palette entry values and the deduced corresponding set of indices; and employ at least one decompressed palette to decode a plurality of symbols in the encoded data to generate the decoded data, the plurality of symbols representing data as defined by input data.

Assignments (4)
SECURITY INTEREST Recorded Apr 6, 2026
From: GL IP PROTECT LLC
To: UNITY MASTER LLC SERIES XIX
Reel/Frame 075366/0123 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2026
From: GURULOGIC MICROSYSTEMS OY
To: GL IP PROTECT LLC
Reel/Frame 074092/0232 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2025
From: GURULOGIC MICROSYSTEMS OY
To: GL IP PROTECT LLC
Reel/Frame 072753/0874 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2018
From: KALEVO, OSSI
To: GURULOGIC MICROSYSTEMS OY
Reel/Frame 044869/0314 →
Priority Claims (1)
GB 1510745 · Jun 18, 2015 · national
Continuity (1)
Related Publication 20180176585A1 · Jun 21, 2018