Method and apparatus for parallel encoding and decoding of data
First Claim
Patent Images
1. A method for decoding a data stream of a plurality of codewords comprising the steps of:
- assigning portions of the data stream to a plurality of decoding resources;
entropy decoding the portions of the data stream in parallel using the plurality of decoding resources and a decoding scheme employing contexts and probabilities, wherein the step of entropy decoding comprises the steps ofat least one of the plurality of decoding resources determining a context in one stage of a decoding pipeline,said at least one of the plurality of decoding resources reading a decoder state from memory in a first next stage of the decoding pipeline immediately following said one stage of the decoding pipeline, andsaid at least one of the plurality of decoding resources generating at least one decoded bit in a second next stage of the decoding pipeline immediately following said first next stage, such that said at least one of the plurality of decoding resources decodes its corresponding portion of the data stream during successive cycles in a pipelined manner.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention provides a method and apparatus for encoding and decoding data in parallel. The present invention provides a system for decompressing a data stream having multiple codewords. The system includes an input channel that receives the data stream. The system also includes a decoder which decodes each bit of the data stream, wherein at least two of the codewords in the data stream are decoded at the same time, such that the data stream is decoded in parallel.
-
Citations
70 Claims
-
1. A method for decoding a data stream of a plurality of codewords comprising the steps of:
-
assigning portions of the data stream to a plurality of decoding resources; entropy decoding the portions of the data stream in parallel using the plurality of decoding resources and a decoding scheme employing contexts and probabilities, wherein the step of entropy decoding comprises the steps of at least one of the plurality of decoding resources determining a context in one stage of a decoding pipeline, said at least one of the plurality of decoding resources reading a decoder state from memory in a first next stage of the decoding pipeline immediately following said one stage of the decoding pipeline, and said at least one of the plurality of decoding resources generating at least one decoded bit in a second next stage of the decoding pipeline immediately following said first next stage, such that said at least one of the plurality of decoding resources decodes its corresponding portion of the data stream during successive cycles in a pipelined manner. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for decoding a data stream of a plurality of codewords comprising the steps of:
-
assigning portions of the data stream to a plurality of decoding resources; entropy decoding the portions of the data stream in parallel using the plurality of decoding resources and a decoding scheme employing contexts and probabilities, wherein at least one of the plurality of decoding resources decodes its corresponding portion of the data stream during successive cycles in a pipelined manner and includes a first type of decoder and a second type of decoder, wherein the first type of decoder is different that the second type of decoder. - View Dependent Claims (8, 9, 10)
-
-
11. A method for decoding a data stream of a plurality of codewords comprising the steps of:
-
determining a current context bin in one pipestage in a decoding pipeline; fetching a decoder state for the context bin from memory in a first next pipestage immediately after the one pipestage in the decoding pipeline; and processing one of the codewords beginning in a second next pipestage immediately after the first next pipestage in the decoding pipeline, including the step of decoding said one of the codewords, wherein the steps of determining, fetching and processing occur in successive cycles in a pipelined manner. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A method for decoding a data stream of a plurality of codewords comprising the steps of:
-
determining a current context bin for one of said plurality of codewords in a first stage of a decoding pipeline; fetching a probability estimate machine (PEM) state for the current context bin in a second stage of a decoding pipeline immediately following the first stage; fetching a bit generator state for the current context bin in a second stage of a decoding pipeline immediately following the first stage; generating a decoded bit representing a first bit of said one of the plurality of codewords being decoded in a third stage of a decoding pipeline immediately following the second stage; decoding the PEM state to determine a code for decoding said one of the plurality of codewords; and decoding said one of the plurality of codewords using the code. - View Dependent Claims (21, 22, 23)
-
-
24. A system for decompressing a data stream having a plurality of codewords, said system comprising:
-
channel means for receiving the plurality of codewords of the data stream; decoder means coupled to said channel means, for entropy decoding codewords in parallel based on contexts and probabilities, wherein the plurality of codewords are decoded in a decoding pipeline in a pipelined manner, wherein the decoding pipeline comprises a first stage to determine a context, a second stage immediately following the first stage to read a decoder state from memory, and a third stage immediately following the second stage to generate at least one decoded bit, such that decoding pipeline decodes its corresponding portion of the data stream during successive cycles in a pipelined manner. - View Dependent Claims (25, 26)
-
-
27. A system for decompressing a data stream of a plurality of codewords comprising:
-
channel control means for receiving the plurality of codewords of the data stream and partitioning the plurality of codewords into a plurality of data streams based on contexts and probabilities; a plurality of bit stream generators, each coupled to receive a distinct one of the plurality of data streams from the channel control means, wherein each of the plurality of bit stream generators decodes each of the codewords using at least one non-binary code, and further wherein at least two of the plurality of bit stream generators decodes codewords at the same time, such that the data stream is decoded in parallel to produce decoded data; and modeling means coupled to the plurality of bit stream generators for selecting the decoded data from the plurality of bit stream generators to output the decoded data. - View Dependent Claims (28, 29)
-
-
30. A system for decompressing a data stream having a plurality of codewords, said system comprising:
-
channel means for receiving the plurality of codewords; a plurality of bit generators coupled to the channel means, wherein the plurality of generators comprises a plurality of Huffman decoders and receives the plurality of codewords from the channel means as a continuous stream and entropy decodes the plurality of codewords into a decoded data stream in parallel using contexts and probabilities, wherein at least two of the plurality of bit generators decode codewords in parallel; and control means coupled to the plurality of bit generators for controlling the plurality of bit generators to receive individual and successive codewords from the channel means for decoding in parallel. - View Dependent Claims (31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
-
43. A method for forming a composite code stream from a plurality of code streams, wherein each of the plurality of code streams includes a plurality of codewords, said method comprising the steps of:
-
packing codewords in each of the plurality of code streams into fixed-length segments; interleaving the codewords from the plurality of code streams according to an assigned sequence of the codewords in the fixed-length segments, such that the composite code stream includes the plurality of codewords in the plurality of code streams. - View Dependent Claims (44, 45, 46)
-
-
47. A system for decoding a code stream having a plurality of codewords, said system comprising:
-
a buffer to supply codewords from the code stream; a context model to provide contexts; a memory located on an integrated circuit and coupled to the context model to store state information, wherein the memory provides state information in response to each context provided by the context model; a plurality of decoders located on the integrated circuit and coupled to the buffer and the memory to decode codewords supplied by the buffer using state information from the memory, wherein two of the plurality of decoders decode codewords in parallel, such that the plurality of decoders decodes the code stream, wherein the buffer, context model, memory and plurality of decoders operate to determine contexts, estimate probabilities, decode codewords and generate bits from run counts in a pipelined manner. - View Dependent Claims (48, 49, 50, 51)
-
-
52. A method for performing JPEG decompression on an image data stream of a plurality of codewords comprising the steps of:
-
assigning portions of the data stream to a plurality of decoding resources; entropy decoding the portions of the data stream using the plurality of decoding resources operating in parallel on separate codewords, wherein at least two of the plurality of decoding resources comprise R-coders and portions of the data stream are decoded using a lossless binary entropy coder.
-
-
53. A method for encoding a data stream comprising the steps of:
-
encoding with a finite amount of buffer memory; and signaling between an encoder and a decoder to indicate that a memory limit has been reached. - View Dependent Claims (54, 55, 56, 57)
-
-
58. An encoder comprising:
-
a sequencer for receiving a data stream of a plurality of codewords; a plurality of coders coupled to the sequencer for entropy encoding the plurality of codewords using contexts and probabilities; buffer means coupled to the plurality of coders or buffering the encoded codewords; interleaving mechanism for requesting the encoded data from the buffer means to produce an output stream of interleaved encoded data; decoder coupled to the interleaving mechanism for modeling the order for encoding the data, wherein the decoder operates in a pipelined manner using contexts and probabilities. - View Dependent Claims (59, 60)
-
-
61. An encoder comprising:
-
a sequencer for receiving a data stream of a plurality of codewords; a plurality of coders coupled to the sequencer for encoding the plurality of codewords; buffer means coupled to the plurality of coders for buffering the encoded codewords; interleaving mechanism for requesting the encoded data from the buffer means to produce an output stream of interleaved encoded data, wherein interleaving mechanism includes means for outputting data that is not fully encoded when the memory limit for the buffer means has been reached. - View Dependent Claims (62, 63)
-
-
64. A real-time video system for decompressing a data stream of a plurality of codewords comprising:
-
first plurality of entropy decoding resources coupled to receive the data stream for decoding each codeword in the data stream, wherein at least two of the first plurality of decoding resources operate to decode separate codewords at the same time such that the data stream is decoded in parallel; formatting means for formatting the decoded data stream to prepare the decoded data stream for display; and display means for displaying the decoded data. - View Dependent Claims (65, 66, 67, 68, 69, 70)
-
Specification