Adaptive entropy encoding/decoding for screen capture content
First Claim
1. A screen capture encoder comprising:
- a run length encoder for encoding plural runs of symbols for pixels of screen capture content, each of the plural runs encoded as a run value and a run length, wherein the run value for at least one of the plural runs is a color value symbol, and wherein the run value for at least one of the plural rums is an above color value symbol; and
a module for adaptively assigning plural Huffman codes to results of the encoding, wherein the module parameterizes the plural Huffman codes as a Huffman code threshold and lengths for less than all of the plural Huffman codes, thereby reducing associated bitrate for the plural Huffman codes.
3 Assignments
0 Petitions
Accused Products
Abstract
Adaptive entropy encoding and decoding techniques are described. For example, a screen capture encoder and decoder perform adaptive entropy encoding and decoding of palettized screen capture content in screen capture video. The encoder selects between different entropy encoding modes (such as an arithmetic coding mode and a combined run length/Huffman encoding mode, which allow the encoder to emphasize bitrate reduction at some times and encoding speed at other times). The run length encoding can use run value symbols adapted to common patterns of redundancy in the content. When the encoder detects series of pixels that could be encoded with different, alternative runs, the encoder selects between the alternative runs based upon efficiency criteria. The encoder also performs adaptive Huffman encoding, efficiently parameterizing Huffman code tables to reduce overall bitrate while largely preserving the compression gains of the adaptive Huffman encoding. A decoder performs converse operations.
-
Citations
15 Claims
-
1. A screen capture encoder comprising:
-
a run length encoder for encoding plural runs of symbols for pixels of screen capture content, each of the plural runs encoded as a run value and a run length, wherein the run value for at least one of the plural runs is a color value symbol, and wherein the run value for at least one of the plural rums is an above color value symbol; and a module for adaptively assigning plural Huffman codes to results of the encoding, wherein the module parameterizes the plural Huffman codes as a Huffman code threshold and lengths for less than all of the plural Huffman codes, thereby reducing associated bitrate for the plural Huffman codes. - View Dependent Claims (2, 3)
-
-
4. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method comprising:
decoding plural run length encoded pixel series for a frame of screen capture content, each of the plural series encoded as a run length and a run value, wherein a first run value for a first series of the plural series is a color value for each pixel in the first series, wherein a second run value for a second series of the plural series is an adjacent pixel marker for each pixel in the second series, and wherein the decoding includes using one or more color values of an adjacent pixel series for the second series. - View Dependent Claims (5, 6)
-
7. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method comprising:
-
creating a variable length code table for a set of plural unique symbol values, the table including a set of plural variable length codes, wherein a threshold separates the set of plural variable length codes into a first group of one or more of the plural variable length codes and a second group of one or more of the plural variable length codes, the one or more variable length codes in the first group having lengths based at least in part upon probability of occurrence of corresponding unique symbol values; parameterizing the table as the threshold and the lengths for the one or more variable length codes in the first group, thereby reducing bitrate associated with the table. - View Dependent Claims (8, 9)
-
-
10. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method of creating a Huffman code table for a set of n unique symbol values, the method comprising:
-
setting a Huffman code count m, where m is less than n; for each of m unique symbol values in the set, generating a different Huffman code with a length substantially in proportion to probability of occurrence for the unique symbol value; for each of n minus m remaining unique symbol values in the set, generating a different Huffman code of substantially equal length; and parameterizing the table as the Huffman code count and the m lengths, thereby reducing bitrate associated with the table. - View Dependent Claims (11)
-
-
12. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method comprising:
-
receiving a code count and one or more code lengths, wherein the code count separates a set of plural variable length codes into a first group of one or more of the plural variable length codes and a second group of one or more of the plural variable length codes, wherein the one or more code lengths are for the one or more variable length codes in the first group; and reconstructing a variable length code table for all of the set of plural variable length codes from the code count and the one or more code lengths. - View Dependent Claims (13)
-
-
14. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method of reconstructing a Huffman code table for a set of n unique symbol values, the method comprising:
-
receiving a Huffman code count m, where m is less than n; receiving m Huffman code lengths for m different Huffman codes; for each of m unique symbol values in the set, generating a different Huffman code having the received Huffman code length for the different Huffman code; for each of n minus m remaining unique symbol values in the set, generating a different Huffman code of substantially equal length. - View Dependent Claims (15)
-
Specification