US20030210163A1 - Multi-symbol variable length code decoder - Google Patents
Multi-symbol variable length code decoder Download PDFInfo
- Publication number
- US20030210163A1 US20030210163A1 US10/143,730 US14373002A US2003210163A1 US 20030210163 A1 US20030210163 A1 US 20030210163A1 US 14373002 A US14373002 A US 14373002A US 2003210163 A1 US2003210163 A1 US 2003210163A1
- Authority
- US
- United States
- Prior art keywords
- signal
- circuit
- control signal
- response
- input signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Definitions
- the present invention relates to a method and/or architecture for decoding variable length code symbols generally and, more particularly, to a method and/or architecture for a multi-symbol variable length code decoder.
- digital data i.e., audio, video, etc.
- data is encoded prior to being transmitted to a receiver.
- the receiver decodes the encoded digital data.
- the decoded digital data is then output to a subsequent signal processing stage.
- statistical compression algorithms are used to compress and encode the digital data.
- variable length decoders are used to decode the variable length code words comprising the compressed data stream.
- Conventional methods for decoding a sequence of variable length code words include a tree searching algorithm and a table look-up technique.
- the tree searching algorithm performs a bit-by-bit search through a code tree to find the end and value of each code word in the input bit stream. Decoding a bit stream using the tree searching algorithm can be too slow for many high speed applications, since the decoding operation is performed at the bit rate rather than at the symbol rate.
- VLD variable length decoder
- a conventional table look-up decoder decodes one code word per clock cycle regardless of the code word bit length, thereby increasing the data throughput of the decoder relative to the tree searching algorithm decoder.
- the actual speed of operation of conventional table look-up decoders can be limited by propagation delay within the decoder.
- variable length code decoder having a data throughput that is adequate for processing high speed digital data (e.g., video), but at a lower clock rate.
- the present invention concerns an apparatus comprising a first circuit and a logic circuit.
- the first circuit may be configured to generate a first output signal in response to (i) an input signal, (ii) a first control signal and (iii) a second control signal.
- the logic circuit may be configured to generate (i) a second output signal, (ii) the first control signal and (iii) the second control signal in response to a predetermined portion of the input signal.
- the objects, features and advantages of the present invention include providing a method and/or architecture for a multi-symbol variable length code decoder that may (i) provide high throughput, (ii) decode one or more symbols per clock cycle, (iii) decode short symbols via a hardwired lookup table, (iv) use hardware to determine a first symbol length and/or (v) use a first symbol length to determine a starting point of a second symbol.
- FIG. 1 is a block diagram of a preferred embodiment of the present invention
- FIG. 2 is a more detailed block diagram of a preferred embodiment of the present invention.
- FIG. 3 is a more detailed block diagram of a full code space decoder of FIG. 2;
- FIG. 4 is a more detailed block diagram of a logic circuit of FIG. 1;
- FIG. 5 is a flow diagram of an example operation in accordance with a preferred embodiment of the present invention.
- FIG. 1 a block diagram of system 100 is shown in accordance with a preferred embodiment of the present invention.
- the system 100 may be implemented as a multiple symbol variable length code (VLC) decoder.
- the system 100 generally decodes at least one symbol per clock cycle from an encoded bit stream.
- the system 100 may be configured to decode more than one symbol per clock cycle when the encoded bit stream comprises code words with bit lengths less than or equal to a predefined value.
- the predefined value may be 7 bits.
- other bit lengths may be implemented accordingly to meet the design criteria of a particular application.
- the system 100 may have an input 102 that may receive a signal (e.g., BITSTREAM), an output 104 that may present a signal (e.g., RUN/LENGTH_ 1 ) and an output 106 that may present a signal (e.g., RUN/LENGTH_ 2 ).
- the system 100 may be configured to generate the signals RUN/LENGTH_ 1 and RUN/LENGTH_ 2 in response to the signal BITSTREAM.
- the system 100 generally presents at least one of the signals RUN/LENGTH_ 1 and RUN/LENGTH_ 2 during each cycle of a clock (e.g., CLK).
- the signals RUN/LENGTH_ 1 and RUN/LENGTH_ 2 may be implemented as output signals.
- the signals RUN/LENGTH_ 1 and RUN/LENGTH_ 2 may comprise, in one example, run lengths, levels, and/or decoded words.
- the signal BITSTREAM generally comprises encoded digital data (e.g., audio, video, etc.).
- the data may be encoded (e.g., compressed) in compliance with any of a number of encoding standards (e.g., MPEG-1, MPEG-2, MPEG-4, JPEG, AC-3, H.26P, etc.).
- a MPEG bit stream may comprise variable length codes and fixed-length codes.
- the variable length codes may be shorter in length (e.g., 2-10+ bits) than the fixed-length codes.
- the fixed-length codes may be, for example, 16-bit, 20-bit or 24-bit long.
- the signal BITSTREAM may comprise variable length code words encoded with a Huffman coding algorithm.
- Huffman encoded bit streams code words with higher probability of occurrence are generally encoded with a smaller number of bits than code words with a lower probability of occurrence.
- the code word(s) with the highest probability of occurrence is(are) generally encoded with the smallest number of bits and the code word(s) with the lowest probability of occurrence is(are) generally encoded with the greatest number of bits.
- Huffman encoded bit streams comprise code words with a respective bit length that is a function of the probability of occurrence of the respective code word in the bit stream.
- the system 100 may comprise a circuit 110 , a circuit 112 , and a circuit 114 .
- the circuit 110 may be implemented as an input circuit.
- the circuit 112 may be implemented as a logic circuit.
- the circuit 114 may be implemented as a variable length decoder (VLD) circuit.
- the signal BITSTREAM may be presented to an input of the circuit 110 .
- the circuit 110 may have (i) an output 116 that may present a signal (e.g., CW_A) to an input 118 of the circuit 112 and an input 120 of the circuit 114 and (ii) an output 122 that may present a signal (e.g., CW_B) to an input 124 of the circuit 114 .
- the signals CW_A and CW_B generally comprise contiguous portions of a bit sequence of the signal BITSTREAM.
- the signal CW_A is generally implemented with a predefined width that is less than a maximum code word bit length of the signal BITSTREAM.
- the signal CW_A may be implemented as a 7-bit signal.
- other bit widths may be implemented accordingly to meet the design criteria of a particular application.
- the signal CW_A may be implemented wider than an average code word bit length of the signal BITSTREAM.
- the width of the signal CW_A is generally set large enough to provide the circuit 112 with sufficient information to determine whether two targeted (short) decodable code words are present in circuit 142 .
- the circuit 112 may be configured to determine whether two targeted code words are present where the combined length of the two code words is less than or equal to eleven bits.
- the signal CW_B is generally implemented with a width similar to the maximum code word bit length of the signal BITSTREAM.
- the signal CW_B may be implemented as a 16-bit signal.
- other widths may be implemented accordingly to meet the design criteria of a particular application.
- the circuit 112 may have an output 126 that may present a signal (e.g., HIT) to an input 128 of the circuit 114 , an output 130 that may present a signal (e.g., LENGTH) to an input 132 of the circuit 114 and an output that may present the signal RUN/LENGTH_ 1 .
- the circuit 112 may be configured to generate the signals RUN/LENGTH_ 1 , HIT and LENGTH in response to the signal CW_A.
- the circuit 112 is generally implemented as a hardwired logic circuit. In one example, the circuit 112 may be implemented as a hardwired look-up table.
- the circuit 112 may be configured to decode a predetermined number of code words of the signal BITSTREAM that have bit lengths smaller than the width of the signal CW_A.
- the circuit 112 may be configured to generate the signal RUN/LENGTH_ 1 as a decoded value of a code word from the signal BITSTREAM.
- the signal HIT may be implemented, in one example, as a status signal.
- a first state of the signal HIT e.g., a logic HIGH or “1”
- the signal CW_A contains a code word that the circuit 112 is configured to decode.
- a second state of the signal HIT e.g., a logic LOW or “0”
- the circuit 112 When a code word that is decodable by the circuit 112 is detected in the signal CW_A, the circuit 112 generally presents the bit length of the detected code word via the signal LENGTH and the run length, level, and/or decoded value of the code word via the signal RUN/LENGTH_ 1 .
- the signals HIT and LENGTH may be used as control signals.
- the circuit 114 may be configured to generate the signal RUN/LENGTH_ 2 in response to one or more of the signals CW_A, CW_B, HIT, and LENGTH. For example, when the signal HIT indicates that the circuit 112 did not decode a code word, the circuit 114 generally examines the combined signals CW_A and CW_B to detect and decode a symbol. When the signal HIT indicates that the circuit 112 is decoding a first symbol, the circuit 114 is generally configured to decode a second symbol in response to the signal CW_B combined with a number of bits of the signal CW_A exclusive of the number of bits specified by the signal LENGTH.
- the circuits 112 and 114 are generally configured to detect and decode at least one, and generally two, symbols within a single clock cycle.
- the system 100 When the signal CW_A contains a symbol (e.g., a code word for the symbol is smaller than the predetermined width of the signal CW_A), the system 100 generally decodes two symbols in one clock cycle.
- the circuit 110 may comprise, in one example, a circuit 140 and a circuit 142 .
- the circuit 140 may be implemented, in one example, as a buffer.
- the circuit 140 may be implemented as a FIFO memory.
- the circuit 142 may be implemented, in one example, as a latch or register.
- the circuit 142 may comprise a barrel shifter configured to generate the signals CW_A and CW_B as portions of a sliding decoding window.
- the signal BITSTREAM may be presented to an input of a circuit 140 .
- the circuit 140 may have an output that may present a signal (e.g., BITSTREAM_BUF) to an input of the circuit 142 .
- the circuit 142 may have an output that may present the signal CW_A and an output that may present the signal CW_B.
- the circuit 112 may be implemented, in one example, as a partial code space decoder.
- the circuit 112 may be a hardwired logic circuit configured to decode a number of targeted (short) code words that may comprise a subset of the full decodable code space of the signal BITSTREAM.
- the circuit 114 may comprise, in one example, a circuit 150 and a circuit 152 .
- the circuit 150 may be implemented, in one example, as a barrel shifter.
- the circuit 152 may be implemented, in one example, as a full code space decoder.
- the circuit 152 may comprise a memory based variable length code decoder and a memory based fixed-length code decoder (described in more detail in connection with FIG. 3).
- the circuit 152 may comprise one or more look-up tables stored in memory.
- the memory may be implemented as a read only memory (ROM). However, other types of memory (e.g., RAM, EPROM, EEPROM, etc.) may be implemented to meet the design criteria of a particular application.
- the signals CW_A, CW_B, HIT and LENGTH may be presented to inputs of the circuit 150 .
- the circuit 150 may have an output that may present a signal (e.g., CW_C) to an input of the circuit 152 .
- the circuit 152 may have an output that may present the signal RUN/LENGTH_ 2 .
- the circuit 112 is generally configured to decode a first symbol based on a presumption that the signal BITSTREAM contains targeted code words with bit lengths less than or equal to the predetermined width of the signal CW_A (e.g., 7 bits).
- the circuit 112 When the circuit 112 is decoding a first symbol, the circuit 112 generally (i) asserts the signal HIT, (ii) generates the signal LENGTH comprising the bit length of the code word encoding the first symbol and (iii) presents the decoded symbol.
- the circuit 114 is generally configured to decode a second symbol from the remaining bits of the signals CW_A and CW_B.
- the circuit 152 generally comprises an entire code table for the particular encoding scheme. However, the circuit 152 may comprise more than one code table to meet the design criteria of a particular application.
- the circuit 114 is generally configured to remove the bits already being decoded by the circuit 112 in response to the signals LENGTH and HIT.
- the circuit 100 generally decodes the first and second symbols in parallel.
- the circuit 112 does not detect a code word for a first symbol within the signal CW_A, the signal HIT is presented in an unasserted state (e.g., a logic low or “0”).
- the barrel shifter 150 is generally configured to include the entire width of the signal CW_A in the decoding window. Since the combined width of the signal CW_A and CW_B is generally wider than the maximum code word bit length of the signal BITSTREAM, the circuit 100 generally decodes at least one code word for each clock cycle. As the width of the signal CW_A is increased, the number of targeted (qualified) code words increases.
- the width of the signal CW_A may be configured to allow decoding of most (or all) of the code words in the signal BITSTREAM at a rate of two code words per cycle.
- the width of the signal CW_A may be determined based on a balancing of cost and performance of the circuit 100 .
- the circuit 100 When the circuit 100 has decoded the symbol or symbols contained in the signals CW_A and CW_B, the bits that encoded the symbol(s) are generally shifted out of the circuit 142 and undecoded bits shifted in from the circuit 140 . The decoding process is generally repeated, until the entire bit stream has been decoded.
- the circuit 152 may comprise, in one example, a variable length decoder 154 and a fixed length decoder 156 .
- the circuits 154 and 156 may be look-up table (or memory) based decoders.
- the signal CW_C may be presented to an input of the circuit 154 and an input of the circuit 156 .
- the signal RUN/LENGTH_ 2 may be presented at a combined output of the circuits 154 and 156 .
- the circuit 154 and the circuit 156 run in parallel to decode variable length codes and fixed length codes that may be contained in the signal BITSTREAM.
- the circuit 156 may be implemented as a ROM based fixed length decoder.
- the circuit 112 may comprise a circuit 160 and a circuit 162 .
- the circuit 160 may be implemented, in one example, as a hardwired decoder circuit.
- the circuit 162 may be implemented, in one example, as a multiplexer and control circuit.
- the circuit 160 may be configured to generate a number of predetermined signals (e.g., run lengths, levels, lengths, fixed-length code words, etc.) in response to the signal CW_A containing a corresponding predetermined bit pattern.
- the circuit 160 may be configured to generate a run length, a level, a length, and/or a fixed-length code word for each of a number of bit patterns that may be contained within the signal CW_A.
- the circuit 160 may be configured to generate a number of coefficients (e.g., from MPEG-2 Table B- 14 ) as described in the following TABLE 1: TABLE 1 Code from CW_A Run Level Length 1s* 0 1 2 11s 0 1 3 011s 1 1 4 0100s 0 2 5 0101s 2 1 5 00101s 0 3 6 0000 110s 0 4 8 0010 0110s 0 5 9 0010 0001s 0 6 9 0000 0010 10s 0 7 11
- s represents a sign bit (e.g., “1” or “0”) that generally indicates whether the code is a positive or negative number.
- the code “1s” is generally a valid AC code only as the first code of a non-intra block. Otherwise, the code “10” is generally an end-of-block (EOB) and the code “11” is not a complete code.
- EOB end-of-block
- the signal CW_A When the leading bit of the signal CW_A is “0” (e.g., “011s” as shown on line 4 of Table 1), the signal CW_A generally will not have two decodable codes that have a combined width of 4.
- the circuit 112 When the first code word of the signal CW_A has a width over the targeted decodable code length (e.g., 7-bits), the circuit 112 generally stops in the attempt to decode the signal during the respective cycle and generates the signal HIT in an unasserted state. In response to the signal HIT having the unasserted state, the circuit 114 generally decodes the code word.
- the circuit 112 when the circuit 112 is configured to receive a 7-bit signal, the code words in the last four rows in Table 1 are generally decoded by the circuit 114 instead of the circuit 112 .
- the targeted decodable code length is determined by a trade off between the performance and the cost of a particular design.
- the circuit 160 may be configured to decode a number of predetermined bit patterns that may be contained within the signal CW_A according to MPEG Table B- 15 as shown in the following TABLE 2: TABLE 2 Code Run Level Length 10s 0 1 3 010s 1 1 4 110s 0 2 4 0111s 0 3 5 1110 0s 0 4 6 1110 1s 0 5 6 0001 01s 0 6 7 0001 00s 0 7 7 1111 011s 0 8 8 1111 100s 0 9 8 0010 0011s 0 10 9 0010 0010s 0 11 9 1111 1010s 0 12 9 1111 1011s 0 13 9 1111 1110s 0 14 9 1111 1111s 0 15 9
- bit patterns and associated symbols may be implemented accordingly to meet the design criteria of a particular application.
- decoding tables in compliance with one or more encoding specifications (e.g., MPEG-1, MPEG-2, MPEG-4, MBA, CBP, MCode, H26P, etc.) may be implemented.
- the circuit 162 may be configured to generate the signals HIT, LENGTH, and RUN/LENGTH_ 1 in response to the signals generated by the circuit 160 .
- the circuit 162 may be configured to assert the signal HIT, present the length of the predetermined bit pattern via the signal LENGTH, and present the associated symbol via the signal RUN/LENGTH_ 1 .
- the circuit 160 may be configured to generate the signal HIT in the unasserted state.
- the circuit 160 may comprise a number of decoder circuits 170 a - 170 n .
- the decoder circuits 170 a - 170 n may be configured, for example, (i) to decode a first AC coefficient symbol; (ii) to decode length codes and/or fixed length code words for codes listed in Table B- 14 of the MPEG-2 specification; (iii) to decode length codes and/or fixed length code words according to Table B- 14 of the MPEG-2 specification for compressed codes shifted by a number of bits (e.g., 2, 3, 4, 5, 6, 8, 9, or 11 bits); (iv) to decode length codes and/or fixed length code words for codes listed in Table B- 15 of the MPEG-2 specification; (v) to decode length codes and/or fixed length code words according to Table B- 15 of the MPEG-2 specification for compressed codes shifted by a number of bits (e.g.
- FIG. 5 a flow diagram 200 illustrating an example operation in accordance with a preferred embodiment of the present invention is shown.
- An input signal is generally loaded for an encoded bit stream (e.g., the block 202 ).
- a predefined portion of the input signal e.g., 7-bits
- the predetermined portion of the input signal does not indicate that two targeted code words are present in the input signal, the attempt to decode two code words may be stopped and only one code word decoded in the cycle (e.g., the block 208 ).
- the entire input signal is examined to determine whether a decodable code word is present (e.g., the block 210 ).
- a decodable code present in the input signal is generally decoded via a full code space look-up table based decoder (e.g., the block 212 ).
- the full code space decoder may comprise, in one example, a variable length decoder and a fixed length decoder running in parallel.
- the decoded code word symbol
- is generally presented to a subsequent circuit e.g., the block 214 ).
- a status signal is generally asserted (e.g., the block 216 ) and (ii) a combined bit length of the two decodable words is determined (e.g., the block 218 ).
- the two code words are generally decoded in parallel.
- the first code word is generally decoded via hardwired logic (e.g., the block 220 a ) while the second code word is decoded via the memory based decoder (e.g., the block 220 b ).
- the memory based decoder generally examines the input signal less the number of bits in the first code word (e.g., the block 222 ) and decodes the second code word via entries in the full code space look-up table based decoder (e.g., the block 224 ).
- the first and second decoded code words are generally presented to a subsequent circuit (e.g., the block 226 ).
- the process 200 is generally repeated for subsequent undecoded bit sequences of the encoded bit stream.
Abstract
Description
- The present invention relates to a method and/or architecture for decoding variable length code symbols generally and, more particularly, to a method and/or architecture for a multi-symbol variable length code decoder.
- In digital data (i.e., audio, video, etc.) transmission systems, data is encoded prior to being transmitted to a receiver. The receiver decodes the encoded digital data. The decoded digital data is then output to a subsequent signal processing stage. To increase the data throughput and memory efficiency of such systems, statistical compression algorithms are used to compress and encode the digital data.
- Compressing the data typically results in data streams that are segmented into variable length code words rather than fixed length code words. Variable length decoders are used to decode the variable length code words comprising the compressed data stream. Conventional methods for decoding a sequence of variable length code words include a tree searching algorithm and a table look-up technique.
- The tree searching algorithm performs a bit-by-bit search through a code tree to find the end and value of each code word in the input bit stream. Decoding a bit stream using the tree searching algorithm can be too slow for many high speed applications, since the decoding operation is performed at the bit rate rather than at the symbol rate.
- To increase the data throughput of a variable length decoder (VLD), the table look-up technique can be used. A conventional table look-up decoder decodes one code word per clock cycle regardless of the code word bit length, thereby increasing the data throughput of the decoder relative to the tree searching algorithm decoder. The actual speed of operation of conventional table look-up decoders can be limited by propagation delay within the decoder.
- In addition to technical problems associated with implementing high throughput VLDs, interfacing a high-speed VLD with a large capacity rate buffer can be expensive with currently available memory technology. The problem becomes more severe if price is an issue, since faster and more expensive memory devices such as static random access memories (SRAMs) and synchronous dynamic random access memories (SDRAMs) are used rather than slower and cheaper memory devices such as asynchronous DRAMs. The price of the memory can be a particularly important consideration for a consumer product.
- It would be desirable to have a variable length code decoder having a data throughput that is adequate for processing high speed digital data (e.g., video), but at a lower clock rate.
- The present invention concerns an apparatus comprising a first circuit and a logic circuit. The first circuit may be configured to generate a first output signal in response to (i) an input signal, (ii) a first control signal and (iii) a second control signal. The logic circuit may be configured to generate (i) a second output signal, (ii) the first control signal and (iii) the second control signal in response to a predetermined portion of the input signal.
- The objects, features and advantages of the present invention include providing a method and/or architecture for a multi-symbol variable length code decoder that may (i) provide high throughput, (ii) decode one or more symbols per clock cycle, (iii) decode short symbols via a hardwired lookup table, (iv) use hardware to determine a first symbol length and/or (v) use a first symbol length to determine a starting point of a second symbol.
- These and other objects, features and advantages of the present invention will be apparent from the following detailed description and the appended claims and drawings in which:
- FIG. 1 is a block diagram of a preferred embodiment of the present invention;
- FIG. 2 is a more detailed block diagram of a preferred embodiment of the present invention;
- FIG. 3 is a more detailed block diagram of a full code space decoder of FIG. 2;
- FIG. 4 is a more detailed block diagram of a logic circuit of FIG. 1; and
- FIG. 5 is a flow diagram of an example operation in accordance with a preferred embodiment of the present invention.
- Referring to FIG. 1, a block diagram of
system 100 is shown in accordance with a preferred embodiment of the present invention. Thesystem 100 may be implemented as a multiple symbol variable length code (VLC) decoder. Thesystem 100 generally decodes at least one symbol per clock cycle from an encoded bit stream. Thesystem 100 may be configured to decode more than one symbol per clock cycle when the encoded bit stream comprises code words with bit lengths less than or equal to a predefined value. In a preferred embodiment, the predefined value may be 7 bits. However, other bit lengths may be implemented accordingly to meet the design criteria of a particular application. - The
system 100 may have aninput 102 that may receive a signal (e.g., BITSTREAM), anoutput 104 that may present a signal (e.g., RUN/LENGTH_1) and anoutput 106 that may present a signal (e.g., RUN/LENGTH_2). Thesystem 100 may be configured to generate the signals RUN/LENGTH_1 and RUN/LENGTH_2 in response to the signal BITSTREAM. Thesystem 100 generally presents at least one of the signals RUN/LENGTH_1 and RUN/LENGTH_2 during each cycle of a clock (e.g., CLK). The signals RUN/LENGTH_1 and RUN/LENGTH_2 may be implemented as output signals. The signals RUN/LENGTH_1 and RUN/LENGTH_2 may comprise, in one example, run lengths, levels, and/or decoded words. - The signal BITSTREAM generally comprises encoded digital data (e.g., audio, video, etc.). The data may be encoded (e.g., compressed) in compliance with any of a number of encoding standards (e.g., MPEG-1, MPEG-2, MPEG-4, JPEG, AC-3, H.26P, etc.). For example, a MPEG bit stream may comprise variable length codes and fixed-length codes. The variable length codes may be shorter in length (e.g., 2-10+ bits) than the fixed-length codes. The fixed-length codes may be, for example, 16-bit, 20-bit or 24-bit long. In one example, the signal BITSTREAM may comprise variable length code words encoded with a Huffman coding algorithm.
- In Huffman encoded bit streams, code words with higher probability of occurrence are generally encoded with a smaller number of bits than code words with a lower probability of occurrence. For example, the code word(s) with the highest probability of occurrence is(are) generally encoded with the smallest number of bits and the code word(s) with the lowest probability of occurrence is(are) generally encoded with the greatest number of bits. In general, Huffman encoded bit streams comprise code words with a respective bit length that is a function of the probability of occurrence of the respective code word in the bit stream.
- The
system 100 may comprise acircuit 110, acircuit 112, and acircuit 114. Thecircuit 110 may be implemented as an input circuit. Thecircuit 112 may be implemented as a logic circuit. Thecircuit 114 may be implemented as a variable length decoder (VLD) circuit. The signal BITSTREAM may be presented to an input of thecircuit 110. Thecircuit 110 may have (i) an output 116 that may present a signal (e.g., CW_A) to aninput 118 of thecircuit 112 and aninput 120 of thecircuit 114 and (ii) anoutput 122 that may present a signal (e.g., CW_B) to aninput 124 of thecircuit 114. - The signals CW_A and CW_B generally comprise contiguous portions of a bit sequence of the signal BITSTREAM. The signal CW_A is generally implemented with a predefined width that is less than a maximum code word bit length of the signal BITSTREAM. In one example, the signal CW_A may be implemented as a 7-bit signal. However, other bit widths may be implemented accordingly to meet the design criteria of a particular application. For example, the signal CW_A may be implemented wider than an average code word bit length of the signal BITSTREAM. The width of the signal CW_A is generally set large enough to provide the
circuit 112 with sufficient information to determine whether two targeted (short) decodable code words are present incircuit 142. For example, when the signal CW_A is implemented with a width of 7 bits, thecircuit 112 may be configured to determine whether two targeted code words are present where the combined length of the two code words is less than or equal to eleven bits. - The signal CW_B is generally implemented with a width similar to the maximum code word bit length of the signal BITSTREAM. In one example, the signal CW_B may be implemented as a 16-bit signal. However, other widths may be implemented accordingly to meet the design criteria of a particular application.
- The
circuit 112 may have anoutput 126 that may present a signal (e.g., HIT) to aninput 128 of thecircuit 114, anoutput 130 that may present a signal (e.g., LENGTH) to aninput 132 of thecircuit 114 and an output that may present the signal RUN/LENGTH_1. Thecircuit 112 may be configured to generate the signals RUN/LENGTH_1, HIT and LENGTH in response to the signal CW_A. Thecircuit 112 is generally implemented as a hardwired logic circuit. In one example, thecircuit 112 may be implemented as a hardwired look-up table. Thecircuit 112 may be configured to decode a predetermined number of code words of the signal BITSTREAM that have bit lengths smaller than the width of the signal CW_A. Thecircuit 112 may be configured to generate the signal RUN/LENGTH_1 as a decoded value of a code word from the signal BITSTREAM. - The signal HIT may be implemented, in one example, as a status signal. For example, a first state of the signal HIT (e.g., a logic HIGH or “1”) generally indicates the signal CW_A contains a code word that the
circuit 112 is configured to decode. A second state of the signal HIT (e.g., a logic LOW or “0”) generally indicates that one of the code words that thecircuit 112 is configured to decode was not detected in the signal CW_A. When a code word that is decodable by thecircuit 112 is detected in the signal CW_A, thecircuit 112 generally presents the bit length of the detected code word via the signal LENGTH and the run length, level, and/or decoded value of the code word via the signal RUN/LENGTH_1. The signals HIT and LENGTH may be used as control signals. - The
circuit 114 may be configured to generate the signal RUN/LENGTH_2 in response to one or more of the signals CW_A, CW_B, HIT, and LENGTH. For example, when the signal HIT indicates that thecircuit 112 did not decode a code word, thecircuit 114 generally examines the combined signals CW_A and CW_B to detect and decode a symbol. When the signal HIT indicates that thecircuit 112 is decoding a first symbol, thecircuit 114 is generally configured to decode a second symbol in response to the signal CW_B combined with a number of bits of the signal CW_A exclusive of the number of bits specified by the signal LENGTH. Thecircuits system 100 generally decodes two symbols in one clock cycle. - Referring to FIG. 2, a more detailed block diagram of a preferred embodiment of the present invention is shown. The
circuit 110 may comprise, in one example, acircuit 140 and acircuit 142. Thecircuit 140 may be implemented, in one example, as a buffer. In one example, thecircuit 140 may be implemented as a FIFO memory. Thecircuit 142 may be implemented, in one example, as a latch or register. In an alternative embodiment, thecircuit 142 may comprise a barrel shifter configured to generate the signals CW_A and CW_B as portions of a sliding decoding window. The signal BITSTREAM may be presented to an input of acircuit 140. Thecircuit 140 may have an output that may present a signal (e.g., BITSTREAM_BUF) to an input of thecircuit 142. Thecircuit 142 may have an output that may present the signal CW_A and an output that may present the signal CW_B. - The
circuit 112 may be implemented, in one example, as a partial code space decoder. Thecircuit 112 may be a hardwired logic circuit configured to decode a number of targeted (short) code words that may comprise a subset of the full decodable code space of the signal BITSTREAM. Thecircuit 114 may comprise, in one example, acircuit 150 and acircuit 152. Thecircuit 150 may be implemented, in one example, as a barrel shifter. Thecircuit 152 may be implemented, in one example, as a full code space decoder. For example, thecircuit 152 may comprise a memory based variable length code decoder and a memory based fixed-length code decoder (described in more detail in connection with FIG. 3). In one example, thecircuit 152 may comprise one or more look-up tables stored in memory. In one example, the memory may be implemented as a read only memory (ROM). However, other types of memory (e.g., RAM, EPROM, EEPROM, etc.) may be implemented to meet the design criteria of a particular application. - The signals CW_A, CW_B, HIT and LENGTH may be presented to inputs of the
circuit 150. Thecircuit 150 may have an output that may present a signal (e.g., CW_C) to an input of thecircuit 152. Thecircuit 152 may have an output that may present the signal RUN/LENGTH_2. - The
circuit 112 is generally configured to decode a first symbol based on a presumption that the signal BITSTREAM contains targeted code words with bit lengths less than or equal to the predetermined width of the signal CW_A (e.g., 7 bits). When thecircuit 112 is decoding a first symbol, thecircuit 112 generally (i) asserts the signal HIT, (ii) generates the signal LENGTH comprising the bit length of the code word encoding the first symbol and (iii) presents the decoded symbol. When the signal HIT is in the asserted state, thecircuit 114 is generally configured to decode a second symbol from the remaining bits of the signals CW_A and CW_B. Thecircuit 152 generally comprises an entire code table for the particular encoding scheme. However, thecircuit 152 may comprise more than one code table to meet the design criteria of a particular application. Thecircuit 114 is generally configured to remove the bits already being decoded by thecircuit 112 in response to the signals LENGTH and HIT. Thecircuit 100 generally decodes the first and second symbols in parallel. - When the
circuit 112 does not detect a code word for a first symbol within the signal CW_A, the signal HIT is presented in an unasserted state (e.g., a logic low or “0”). When the signal HIT is unasserted, thebarrel shifter 150 is generally configured to include the entire width of the signal CW_A in the decoding window. Since the combined width of the signal CW_A and CW_B is generally wider than the maximum code word bit length of the signal BITSTREAM, thecircuit 100 generally decodes at least one code word for each clock cycle. As the width of the signal CW_A is increased, the number of targeted (qualified) code words increases. The width of the signal CW_A may be configured to allow decoding of most (or all) of the code words in the signal BITSTREAM at a rate of two code words per cycle. The width of the signal CW_A may be determined based on a balancing of cost and performance of thecircuit 100. - When the
circuit 100 has decoded the symbol or symbols contained in the signals CW_A and CW_B, the bits that encoded the symbol(s) are generally shifted out of thecircuit 142 and undecoded bits shifted in from thecircuit 140. The decoding process is generally repeated, until the entire bit stream has been decoded. - Referring to FIG. 3, a more detailed block diagram of a full code space decoder of FIG. 2 is shown. The
circuit 152 may comprise, in one example, avariable length decoder 154 and a fixedlength decoder 156. Thecircuits circuit 154 and an input of thecircuit 156. The signal RUN/LENGTH_2 may be presented at a combined output of thecircuits circuit 154 and thecircuit 156 run in parallel to decode variable length codes and fixed length codes that may be contained in the signal BITSTREAM. In one example, thecircuit 156 may be implemented as a ROM based fixed length decoder. - Referring to FIG. 4, a more detailed block diagram of a
circuit 112 in accordance with a preferred embodiment of the present invention is shown. Thecircuit 112 may comprise acircuit 160 and acircuit 162. Thecircuit 160 may be implemented, in one example, as a hardwired decoder circuit. Thecircuit 162 may be implemented, in one example, as a multiplexer and control circuit. Thecircuit 160 may be configured to generate a number of predetermined signals (e.g., run lengths, levels, lengths, fixed-length code words, etc.) in response to the signal CW_A containing a corresponding predetermined bit pattern. For example, thecircuit 160 may be configured to generate a run length, a level, a length, and/or a fixed-length code word for each of a number of bit patterns that may be contained within the signal CW_A. In one example, thecircuit 160 may be configured to generate a number of coefficients (e.g., from MPEG-2 Table B-14) as described in the following TABLE 1:TABLE 1 Code from CW_A Run Level Length 1s* 0 1 2 11s 0 1 3 011s 1 1 4 0100s 0 2 5 0101s 2 1 5 00101s 0 3 6 0000 110s 0 4 8 0010 0110s 0 5 9 0010 0001s 0 6 9 0000 0010 10s 0 7 11 - Where s represents a sign bit (e.g., “1” or “0”) that generally indicates whether the code is a positive or negative number. The code “1s” is generally a valid AC code only as the first code of a non-intra block. Otherwise, the code “10” is generally an end-of-block (EOB) and the code “11” is not a complete code.
- When the leading bit of the signal CW_A is “0” (e.g., “011s” as shown on line4 of Table 1), the signal CW_A generally will not have two decodable codes that have a combined width of 4. When the first code word of the signal CW_A has a width over the targeted decodable code length (e.g., 7-bits), the
circuit 112 generally stops in the attempt to decode the signal during the respective cycle and generates the signal HIT in an unasserted state. In response to the signal HIT having the unasserted state, thecircuit 114 generally decodes the code word. For example, when thecircuit 112 is configured to receive a 7-bit signal, the code words in the last four rows in Table 1 are generally decoded by thecircuit 114 instead of thecircuit 112. In general, the targeted decodable code length is determined by a trade off between the performance and the cost of a particular design. - In another example, the
circuit 160 may be configured to decode a number of predetermined bit patterns that may be contained within the signal CW_A according to MPEG Table B-15 as shown in the following TABLE 2:TABLE 2 Code Run Level Length 10s 0 1 3 010s 1 1 4 110s 0 2 4 0111s 0 3 5 1110 0s 0 4 6 1110 1s 0 5 6 0001 01s 0 6 7 0001 00s 0 7 7 1111 011s 0 8 8 1111 100s 0 9 8 0010 0011s 0 10 9 0010 0010s 0 11 9 1111 1010s 0 12 9 1111 1011s 0 13 9 1111 1110s 0 14 9 1111 1111s 0 15 9 - However, other bit patterns and associated symbols may be implemented accordingly to meet the design criteria of a particular application. For example, decoding tables in compliance with one or more encoding specifications (e.g., MPEG-1, MPEG-2, MPEG-4, MBA, CBP, MCode, H26P, etc.) may be implemented.
- The
circuit 162 may be configured to generate the signals HIT, LENGTH, and RUN/LENGTH_1 in response to the signals generated by thecircuit 160. For example, when thecircuit 160 generates an output in response to one of the predetermined bit patterns, thecircuit 162 may be configured to assert the signal HIT, present the length of the predetermined bit pattern via the signal LENGTH, and present the associated symbol via the signal RUN/LENGTH_1. When thecircuit 160 does not generate an output (e.g., the signal CW_A does not contain any of the predetermined bit patterns), thecircuit 162 may be configured to generate the signal HIT in the unasserted state. - In one example, the
circuit 160 may comprise a number of decoder circuits 170 a-170 n. The decoder circuits 170 a-170 n may be configured, for example, (i) to decode a first AC coefficient symbol; (ii) to decode length codes and/or fixed length code words for codes listed in Table B-14 of the MPEG-2 specification; (iii) to decode length codes and/or fixed length code words according to Table B-14 of the MPEG-2 specification for compressed codes shifted by a number of bits (e.g., 2, 3, 4, 5, 6, 8, 9, or 11 bits); (iv) to decode length codes and/or fixed length code words for codes listed in Table B-15 of the MPEG-2 specification; (v) to decode length codes and/or fixed length code words according to Table B-15 of the MPEG-2 specification for compressed codes shifted by a number of bits (e.g. 2, 3, 4, 5, 6, 8, 9, or 11 bits); (vi) to decode length codes and/or fixed-length code words according to one or more of the tables B-1, B-2, B-3, B-4, B-9, B-10 of the MPEG-2 specification; (vii) to decode run, level, and/or other information; and/or (viii) to decode length codes and/or fixed length code words for any other compressed data standard accordingly to meet the design criteria of a particular application. - Referring to FIG. 5, a flow diagram200 illustrating an example operation in accordance with a preferred embodiment of the present invention is shown. An input signal is generally loaded for an encoded bit stream (e.g., the block 202). A predefined portion of the input signal (e.g., 7-bits) is generally examined to detect the presence of two targeted code word bit patterns (e.g., the
block 204 and 206). When the predetermined portion of the input signal does not indicate that two targeted code words are present in the input signal, the attempt to decode two code words may be stopped and only one code word decoded in the cycle (e.g., the block 208). The entire input signal is examined to determine whether a decodable code word is present (e.g., the block 210). A decodable code present in the input signal is generally decoded via a full code space look-up table based decoder (e.g., the block 212). The full code space decoder may comprise, in one example, a variable length decoder and a fixed length decoder running in parallel. The decoded code word (symbol) is generally presented to a subsequent circuit (e.g., the block 214). - When two decodable code words are detected within the input signal, (i) a status signal is generally asserted (e.g., the block216) and (ii) a combined bit length of the two decodable words is determined (e.g., the block 218). The two code words are generally decoded in parallel. For example, the first code word is generally decoded via hardwired logic (e.g., the
block 220 a) while the second code word is decoded via the memory based decoder (e.g., theblock 220 b). The memory based decoder generally examines the input signal less the number of bits in the first code word (e.g., the block 222) and decodes the second code word via entries in the full code space look-up table based decoder (e.g., the block 224). When the first code word has been decoded via the hardwired logic and the second code word has been decoded via the memory based decoder, the first and second decoded code words are generally presented to a subsequent circuit (e.g., the block 226). Theprocess 200 is generally repeated for subsequent undecoded bit sequences of the encoded bit stream. - While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the spirit and scope of the invention.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/143,730 US6653955B1 (en) | 2002-05-09 | 2002-05-09 | Multi-symbol variable length code decoder |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/143,730 US6653955B1 (en) | 2002-05-09 | 2002-05-09 | Multi-symbol variable length code decoder |
Publications (2)
Publication Number | Publication Date |
---|---|
US20030210163A1 true US20030210163A1 (en) | 2003-11-13 |
US6653955B1 US6653955B1 (en) | 2003-11-25 |
Family
ID=29400207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/143,730 Expired - Lifetime US6653955B1 (en) | 2002-05-09 | 2002-05-09 | Multi-symbol variable length code decoder |
Country Status (1)
Country | Link |
---|---|
US (1) | US6653955B1 (en) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101246A1 (en) * | 2004-10-06 | 2006-05-11 | Eiji Iwata | Bit manipulation method, apparatus and system |
US20060222085A1 (en) * | 2005-03-30 | 2006-10-05 | Chhavi Kishore | System(s), methods(s), and apparatus for extracting slices from bitstream |
US7433824B2 (en) * | 2002-09-04 | 2008-10-07 | Microsoft Corporation | Entropy coding by adapting coding between level and run-length/level modes |
US20080262855A1 (en) * | 2002-09-04 | 2008-10-23 | Microsoft Corporation | Entropy coding by adapting coding between level and run length/level modes |
US7684981B2 (en) | 2005-07-15 | 2010-03-23 | Microsoft Corporation | Prediction of spectral coefficients in waveform coding and decoding |
US7693709B2 (en) | 2005-07-15 | 2010-04-06 | Microsoft Corporation | Reordering coefficients for waveform coding or decoding |
US7933337B2 (en) | 2005-08-12 | 2011-04-26 | Microsoft Corporation | Prediction of transform coefficients for image compression |
US8179974B2 (en) | 2008-05-02 | 2012-05-15 | Microsoft Corporation | Multi-level representation of reordered transform coefficients |
US8184710B2 (en) | 2007-02-21 | 2012-05-22 | Microsoft Corporation | Adaptive truncation of transform coefficient data in a transform-based digital media codec |
US20120163470A1 (en) * | 2010-12-24 | 2012-06-28 | Microsoft Corporation | Image and video decoding implementations |
US8406307B2 (en) | 2008-08-22 | 2013-03-26 | Microsoft Corporation | Entropy coding/decoding of hierarchically organized data |
US8508391B1 (en) * | 2011-01-19 | 2013-08-13 | Marvell International Ltd | Code word formatter of shortened non-binary linear error correction code |
US20140169480A1 (en) * | 2012-12-13 | 2014-06-19 | Qualcomm Incorporated | Image compression method and apparatus for bandwidth saving |
US9161034B2 (en) | 2007-02-06 | 2015-10-13 | Microsoft Technology Licensing, Llc | Scalable multi-thread video decoding |
US9210421B2 (en) | 2011-08-31 | 2015-12-08 | Microsoft Technology Licensing, Llc | Memory management for video decoding |
US9554134B2 (en) | 2007-06-30 | 2017-01-24 | Microsoft Technology Licensing, Llc | Neighbor determination in video decoding |
US20170220351A1 (en) * | 2013-06-28 | 2017-08-03 | Lntel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
US9819949B2 (en) | 2011-12-16 | 2017-11-14 | Microsoft Technology Licensing, Llc | Hardware-accelerated decoding of scalable video bitstreams |
US9819359B1 (en) | 2016-12-11 | 2017-11-14 | Microsoft Technology Licensing, Llc | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
US10361715B1 (en) * | 2018-06-04 | 2019-07-23 | Amazon Technologies, Inc. | Decompression circuit |
WO2021046051A1 (en) * | 2019-09-02 | 2021-03-11 | Advanced Micro Devices, Inc. | Multiple symbol decoder |
US11211945B1 (en) * | 2020-10-29 | 2021-12-28 | Microsoft Technology Licensing, Llc | Parallelized decoding of variable-length prefix codes |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7747095B2 (en) * | 2004-10-08 | 2010-06-29 | Nvidia Corporation | Methods and systems for rate control in image compression |
US7286066B1 (en) | 2005-12-16 | 2007-10-23 | Nvidia Corporation | Acceleration of bitstream decoding |
KR100667595B1 (en) * | 2005-12-29 | 2007-01-11 | 삼성전자주식회사 | Variable length decoder |
US7369066B1 (en) * | 2006-12-21 | 2008-05-06 | Lsi Logic Corporation | Efficient 8×8 CABAC residual block transcode system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5173695A (en) | 1990-06-29 | 1992-12-22 | Bell Communications Research, Inc. | High-speed flexible variable-length-code decoder |
KR970002483B1 (en) | 1993-11-29 | 1997-03-05 | 대우전자 주식회사 | A high speed variable length decoder |
US5502493A (en) * | 1994-05-19 | 1996-03-26 | Matsushita Electric Corporation Of America | Variable length data decoder for use with MPEG encoded video data |
US5650905A (en) | 1995-12-28 | 1997-07-22 | Philips Electronics North America Corporation | Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams |
-
2002
- 2002-05-09 US US10/143,730 patent/US6653955B1/en not_active Expired - Lifetime
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8090574B2 (en) | 2002-09-04 | 2012-01-03 | Microsoft Corporation | Entropy encoding and decoding using direct level and run-length/level context-adaptive arithmetic coding/decoding modes |
US7433824B2 (en) * | 2002-09-04 | 2008-10-07 | Microsoft Corporation | Entropy coding by adapting coding between level and run-length/level modes |
US20080262855A1 (en) * | 2002-09-04 | 2008-10-23 | Microsoft Corporation | Entropy coding by adapting coding between level and run length/level modes |
US8712783B2 (en) | 2002-09-04 | 2014-04-29 | Microsoft Corporation | Entropy encoding and decoding using direct level and run-length/level context-adaptive arithmetic coding/decoding modes |
US7822601B2 (en) | 2002-09-04 | 2010-10-26 | Microsoft Corporation | Adaptive vector Huffman coding and decoding based on a sum of values of audio data symbols |
US7840403B2 (en) | 2002-09-04 | 2010-11-23 | Microsoft Corporation | Entropy coding using escape codes to switch between plural code tables |
US9390720B2 (en) | 2002-09-04 | 2016-07-12 | Microsoft Technology Licensing, Llc | Entropy encoding and decoding using direct level and run-length/level context-adaptive arithmetic coding/decoding modes |
US7334116B2 (en) | 2004-10-06 | 2008-02-19 | Sony Computer Entertainment Inc. | Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length |
US20060101246A1 (en) * | 2004-10-06 | 2006-05-11 | Eiji Iwata | Bit manipulation method, apparatus and system |
US20060222085A1 (en) * | 2005-03-30 | 2006-10-05 | Chhavi Kishore | System(s), methods(s), and apparatus for extracting slices from bitstream |
US7693709B2 (en) | 2005-07-15 | 2010-04-06 | Microsoft Corporation | Reordering coefficients for waveform coding or decoding |
US7684981B2 (en) | 2005-07-15 | 2010-03-23 | Microsoft Corporation | Prediction of spectral coefficients in waveform coding and decoding |
US7933337B2 (en) | 2005-08-12 | 2011-04-26 | Microsoft Corporation | Prediction of transform coefficients for image compression |
US9161034B2 (en) | 2007-02-06 | 2015-10-13 | Microsoft Technology Licensing, Llc | Scalable multi-thread video decoding |
US8184710B2 (en) | 2007-02-21 | 2012-05-22 | Microsoft Corporation | Adaptive truncation of transform coefficient data in a transform-based digital media codec |
US9819970B2 (en) | 2007-06-30 | 2017-11-14 | Microsoft Technology Licensing, Llc | Reducing memory consumption during video decoding |
US9648325B2 (en) | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
US10567770B2 (en) | 2007-06-30 | 2020-02-18 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
US9554134B2 (en) | 2007-06-30 | 2017-01-24 | Microsoft Technology Licensing, Llc | Neighbor determination in video decoding |
US9172965B2 (en) | 2008-05-02 | 2015-10-27 | Microsoft Technology Licensing, Llc | Multi-level representation of reordered transform coefficients |
US8179974B2 (en) | 2008-05-02 | 2012-05-15 | Microsoft Corporation | Multi-level representation of reordered transform coefficients |
US8406307B2 (en) | 2008-08-22 | 2013-03-26 | Microsoft Corporation | Entropy coding/decoding of hierarchically organized data |
US9706214B2 (en) * | 2010-12-24 | 2017-07-11 | Microsoft Technology Licensing, Llc | Image and video decoding implementations |
US20120163470A1 (en) * | 2010-12-24 | 2012-06-28 | Microsoft Corporation | Image and video decoding implementations |
US9160364B1 (en) * | 2011-01-19 | 2015-10-13 | Marvell International Ltd. | Code word formatter of shortened non-binary linear error correction code |
US8508391B1 (en) * | 2011-01-19 | 2013-08-13 | Marvell International Ltd | Code word formatter of shortened non-binary linear error correction code |
US9210421B2 (en) | 2011-08-31 | 2015-12-08 | Microsoft Technology Licensing, Llc | Memory management for video decoding |
US9819949B2 (en) | 2011-12-16 | 2017-11-14 | Microsoft Technology Licensing, Llc | Hardware-accelerated decoding of scalable video bitstreams |
US20140169480A1 (en) * | 2012-12-13 | 2014-06-19 | Qualcomm Incorporated | Image compression method and apparatus for bandwidth saving |
US9299166B2 (en) * | 2012-12-13 | 2016-03-29 | Qualcomm Incorporated | Image compression method and apparatus for bandwidth saving |
US10261788B2 (en) * | 2013-06-28 | 2019-04-16 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
US20170220351A1 (en) * | 2013-06-28 | 2017-08-03 | Lntel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
US9819359B1 (en) | 2016-12-11 | 2017-11-14 | Microsoft Technology Licensing, Llc | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
US10361715B1 (en) * | 2018-06-04 | 2019-07-23 | Amazon Technologies, Inc. | Decompression circuit |
WO2021046051A1 (en) * | 2019-09-02 | 2021-03-11 | Advanced Micro Devices, Inc. | Multiple symbol decoder |
US11211945B1 (en) * | 2020-10-29 | 2021-12-28 | Microsoft Technology Licensing, Llc | Parallelized decoding of variable-length prefix codes |
Also Published As
Publication number | Publication date |
---|---|
US6653955B1 (en) | 2003-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6653955B1 (en) | Multi-symbol variable length code decoder | |
US5491480A (en) | Variable length decoder using serial and parallel processing | |
US20030085822A1 (en) | High performance memory efficient variable-length coding decoder | |
US5325092A (en) | Huffman decoder architecture for high speed operation and reduced memory | |
US7817864B2 (en) | Coding apparatus and decoding apparatus | |
US6215424B1 (en) | System for variable length codeword processing suitable for video and other applications | |
US7372379B1 (en) | Method and system for decoding N-tuple variable length code | |
JP2000511738A (en) | HDTV video decoder and decoding method | |
JPH0818460A (en) | Huffman decorder | |
US5808570A (en) | Device and method for pair-match Huffman transcoding and high-performance variable length decoder with two-word bit stream segmentation which utilizes the same | |
WO2006073993A2 (en) | Fast compact decoder for huffman codes | |
US5280349A (en) | HDTV decoder | |
EP0812496B1 (en) | Variable length decoder | |
US5706001A (en) | Run-length decoding apparatus for use in a video signal decoding system | |
Fogg | Survey of software and hardware VLC architectures | |
US6285789B1 (en) | Variable length code decoder for MPEG | |
US20050249292A1 (en) | System and method for enhancing the performance of variable length coding | |
US8175164B2 (en) | Devices and methods for data compression and decompression | |
US5663725A (en) | VLC decoder with sign bit masking | |
US5835035A (en) | High performance variable length decoder with two-word bit stream segmentation and related method | |
US5701126A (en) | High speed variable length decoder | |
Chang et al. | A VLSI architecture design of VLC encoder for high data rate video/image coding | |
US7142603B2 (en) | Method and system for predictive table look-up code length of variable length code | |
JP2003174365A (en) | Decoding device and its method | |
US11669281B1 (en) | Count circuit for symbol statistics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LSI LOGIC CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:YANG, ERIC KUO-UEI;REEL/FRAME:012898/0568 Effective date: 20020430 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AG Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:LSI CORPORATION;AGERE SYSTEMS LLC;REEL/FRAME:032856/0031 Effective date: 20140506 |
|
AS | Assignment |
Owner name: LSI CORPORATION, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:LSI LOGIC CORPORATION;REEL/FRAME:033102/0270 Effective date: 20070406 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LSI CORPORATION;REEL/FRAME:035390/0388 Effective date: 20140814 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: AGERE SYSTEMS LLC, PENNSYLVANIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039 Effective date: 20160201 Owner name: LSI CORPORATION, CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039 Effective date: 20160201 |
|
AS | Assignment |
Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001 Effective date: 20160201 Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001 Effective date: 20160201 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001 Effective date: 20170119 Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001 Effective date: 20170119 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE Free format text: MERGER;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:047195/0026 Effective date: 20180509 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER PREVIOUSLY RECORDED ON REEL 047195 FRAME 0026. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:047477/0423 Effective date: 20180905 |