Method and apparatus for encoding and decoding data
First Claim
1. A method for encoding a data stream comprising the steps of:
- generating codeword information representative of the data stream in response to the data stream, wherein the codeword information comprises a plurality of codewords, and further wherein multiple codewords are generated from data of the data stream being processed in parallel;
generating coded data in response to the codeword information, wherein the step of generating coded data comprises outputting each of said plurality of codewords in the codeword information as fixed length data structures ordered in an order based on data at the beginning of each if the fixed length data structures.
0 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for decompressing and compressing data is described. The present invention provides an encoder for use in a compression system having a decoder for decoding information generated by the encoder. The encoder of the present invention includes a coder for producing codeword information in response to data. The encoder also includes a reorder unit that generates a coded data stream in response to the codeword information from the coder. The reorder unit comprises a run count reorder unit for arranging codewords into a decoding order and a bit pack unit to combine variable length codewords into fixed length interleaved words and to output the fixed length interleaved words in an order required by the decoder.
-
Citations
120 Claims
-
1. A method for encoding a data stream comprising the steps of:
-
generating codeword information representative of the data stream in response to the data stream, wherein the codeword information comprises a plurality of codewords, and further wherein multiple codewords are generated from data of the data stream being processed in parallel; generating coded data in response to the codeword information, wherein the step of generating coded data comprises outputting each of said plurality of codewords in the codeword information as fixed length data structures ordered in an order based on data at the beginning of each if the fixed length data structures. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. An encoding system for encoding a data stream, said encoding system comprising:
-
an encoder coupled to receive the data stream for generating codeword information including codewords, and further wherein multiple codewords are generated by the encoder from data being processed in parallel; and a reorder unit coupled to the encoder to generate coded data as a code stream in response to the codeword information, wherein the reorder unit reorders codewords generated by the encoder in a decoder order based on data at the beginning of a portion of the data stream represented by each codeword. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. An encoding system for use in a compression system, said encoding comprising:
-
an encoder for producing codeword information in response to data; a reorder unit coupled to the coder, wherein the reorder unit generates a coded data stream in response to the codeword information, wherein the reorder unit comprises a run count reorder unit for reordering run counts by placing each codeword at the beginning of a run and a bit pack unit coupled to receive codewords from the run count reorder unit to combine variable length codewords into a plurality of fixed length interleaved words and to output the plurality of fixed length interleaved words in an order required by a decoder. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)
-
-
51. A coding system for processing data comprising:
-
an index generator for generating indices based on the data; and a state table coupled to provide a probability estimate based on the indices, wherein the state table includes a first plurality of states and a second plurality of states, wherein each of the states corresponds to a code, and further wherein transitions between different codes corresponding to the first plurality of states occurs faster when transitioning between states in the first plurality of states than transitions between different codes corresponding to the second plurality of states when transitioning in the second plurality of states. - View Dependent Claims (52, 53, 54, 55, 56, 57, 58)
-
-
59. A coding system for processing data comprising:
-
an index generator for generating indices based on the data; and a state table coupled to provide a probability estimate based on the indices, wherein the state table includes a plurality of states, wherein each of the states corresponds to a code, and every code in the state table is repeated a predetermined number of times; wherein transitioning between states of the state table occurs based on an acceleration term that is modifiable, such that transitioning between states occurs at a first rate during a first time period is different than a second rate of transitioning during a second time period. - View Dependent Claims (60, 61, 62, 63, 64, 65)
-
-
66. An entropy decoder for decoding a data stream of a plurality of codewords comprising:
-
a plurality of bit stream generators for receiving the data stream; and a state table coupled to the plurality of bit stream generators to provide a probability estimate to the plurality of bit stream generators, wherein the plurality of bit stream generators generates a decoded result for each codeword in the data stream in response to the probability estimate using a Rn(k) code for multiple values of n, and further wherein the state table includes a first plurality of states and a second plurality of states, wherein transitions between different codes in the first plurality of states occurs faster than transitions between codes in the second plurality of states. - View Dependent Claims (67, 68, 69, 70, 71, 72, 73)
-
-
74. An entropy decoder for decoding a data stream of a plurality of codewords comprising:
-
a plurality of bit stream generators for receiving data from the data stream; and a state table coupled to provide probability estimates based on the indices, wherein the state table includes a plurality of states, wherein each of the states corresponds to a code, and every code in the state table is repeated a predetermined number of times; wherein transitioning between states of the state table occurs based on an acceleration term that is modifiable, such that a first rate of transitioning between states during a first time period is different than a second rate of transitioning during a second time period.
-
-
75. A decoder for decoding a plurality of interleaved words, said decoder comprising:
-
a variable length shifter for receiving the data stream and for shifting codewords to output properly aligned coded data, wherein the variable length shifter comprises a plurality of registers; a run length decoder coupled to the variable length shifter to receive the properly aligned coded data as codewords for determining the codeword type; a probability estimation machine coupled to the run length decoder to determine the code for the run length decoder, such that the run length decoder generates a run length and an indication of whether the LPS occurred in response to each codeword. - View Dependent Claims (76, 77, 78, 79)
-
-
80. A decoding system comprising:
-
a FIFO structure coupled to receive data; a context model for providing contexts; a memory coupled to the context model for storing state information and providing state information in response to each context provided by the context model; a plurality of decoders coupled to receive coded data from the FIFO structure and coupled to the memory for decoding codewords supplied by the FIFO structure using state information from the memory, wherein the plurality of decoders provide run counts may be generated for a plurality of codes. - View Dependent Claims (81, 82, 83, 84, 85, 86)
-
-
87. An encoding system for encoding input data comprising:
-
an encoding unit coupled to receive the input data to generate coded data in the form of a plurality of streams, wherein coded data is assigned to one of the plurality of streams based on a set of criteria; a fixed size memory coupled to the encoding unit for storing the plurality of streams of coded data, wherein coded data of greater importance is stored and coded data of less importance is discarded if the fixed size memory is full. - View Dependent Claims (88, 89, 90)
-
-
91. A method for initializing a plurality of contexts in a system while coding data, said method comprising:
-
specifying an initial PEM state; obtaining a PEM state of a current context, wherein the step of obtaining comprises the steps of accessing a memory location for the current context to obtain a currently assigned PEM state; determining whether the memory location is valid by comparing a current context number for the current context to a counter value incremented as each context is accessed, wherein the currently assigned PEM state is determined valid is if the counter value indicates that the memory location has already been initialized; using the initial PEM state for the current context and ignoring currently assigned PEM state for the current context when PEM data of the accessed memory location is not valid; and using the currently assigned PEM state for the current context if the PEM data is valid. - View Dependent Claims (92)
-
-
93. A decoder comprising:
-
a context model to provide context bins; a memory coupled to the context model to provide probability states based on the context bins; a logic coupled to the memory to generate probability classes based on the probability states; a decoder coupled the logic to generate a plurality of enable signals based on the probability classes; a plurality of bit generators coupled to the decoder and coupled to receive the coded data, wherein each of the plurality of bit generators is dedicated to at least one distinct code and operates in response to a distinct one of the plurality of enable signals, wherein the decoder enables one of the plurality of bit generators based on a current probability class to cause one of the plurality of bit stream generators to decode coded data associated with the current probability class. - View Dependent Claims (94, 95, 96)
-
-
97. A method for decoding comprising the steps of:
-
providing a context bin; accessing a memory using the context bin to obtain a probability state; generating a probability class based on the probability state; enabling one of a plurality of bit generators, wherein each of the plurality of bit generators is dedicated to at least one distinct code, such that only said at least one distinct code is used for decoding; and said one of the plurality of bit stream generators decoding coded data.
-
-
98. An encoder system comprising:
-
a context model to provide context bins a memory coupled to the context model to provide probability states based on the context bins; a logic coupled to the memory to generate probability classes based on the probability states; an encoder coupled the logic to generate a plurality of enable signals based on the probability class; a plurality of bit generators coupled to the encoder and coupled to receive the input data, wherein each of the plurality of bit generators is dedicated to at least one distinct code, wherein the encoder enables one of the plurality of bit generators based on a current probability class, such that said one of the plurality of bit stream generators encodes input data associated with the current probability class. - View Dependent Claims (99, 100, 101)
-
-
102. A method for encoding comprising the steps of:
-
providing a context bin; accessing a memory using the context bin to obtain a probability state; generating a probability class based on the probability state; enabling one of a plurality of bit generators that are dedicated to at least one distinct code, such that only said one distinct code is used for encoding; and said one of the plurality of bit stream generators encoding the input data.
-
-
103. A method for decoding coded data comprising a plurality of codewords, said method comprising the steps of:
-
loading a count value into a counter associated with each run counter, wherein the count value corresponds to the size of a codeword memory used during encoding when a new run is started, said count value being loaded when a new codeword for said each run counter is fetched; decrementing the count value each time any codeword is fetched; and clearing a bit generator state associated with said new codeword when the counter decrements to zero. - View Dependent Claims (104, 105)
-
-
106. A method for decoding coded data comprising a plurality of codewords, said method comprising the steps of:
-
incrementing a counter value each time a codeword is requested, wherein the counter value comprises a current time indication; storing the counter value as a stored time indication when a codeword is started; comparing the stored time indication plus the size of an encoder memory to the current time indication; and clearing a bit generator state for the first codeword and requesting a new codeword when the current time indication is greater than the stored time indication plus the size of an encoder memory. - View Dependent Claims (107, 108)
-
-
109. A method for decoding coded data comprising a plurality of codewords, said method comprising the steps of:
-
storing an index corresponding to a codeword, wherein the index is stored in a queue when the codeword is requested; marking an entry of the index in the queue as invalid; storing the codeword in the entry and marking the entry as valid if the codeword completes; and outputting data from the queue comprising the steps of outputting data from the queue entry and indicating the data is invalid to the decoder if the queue entry is marked invalid and the codeword prematurely completes and the decoder clearing bit generator state information in response to receiving data from the queue marked invalid.
-
-
110. A decoder for decoding coded data, said decoder comprising:
-
a context modelling mechanism for providing contexts, wherein the context modelling mechanism comprises a plurality of integrated circuits; a memory coupled to the context modeling mechanism for storing state information, wherein the memory provides state information in response to each context provided by the context modeling mechanism; and a plurality of decoders coupled the memory for decoding codewords using the state information from the memory, wherein the plurality of decoders decode codewords using a plurality of R-codes, wherein the plurality of R-codes are operable to code at least one non-maximum length run of most probable symbols that is not followed by a least probable symbol. - View Dependent Claims (111)
-
-
112. A system for decoding a code stream having a plurality of codewords, said system comprising:
-
a context modelling mechanism for providing contexts, wherein the context modelling mechanism comprises a plurality of integrated circuits; a memory coupled to the context modeling mechanism for storing state information, wherein the memory provides state information in response to each context provided by the context modeling mechanism; and a plurality of decoders coupled the memory for decoding codewords using the state information from the memory. - View Dependent Claims (113, 114, 115, 116)
-
-
117. A system for decoding a code stream having a plurality of codewords, said system comprising:
-
a context modelling mechanism for providing contexts; a memory coupled to the context modeling mechanism for storing state information, wherein the memory provides state information in response to each context provided by the context modeling mechanism; and a plurality of decoders coupled to the memory for decoding codewords using the state information from the memory, wherein at least one of the plurality of decoders comprises a delay tolerant decoder. - View Dependent Claims (118, 119, 120)
-
Specification