US20090100251A1 - Parallel context adaptive binary arithmetic coding - Google Patents

Parallel context adaptive binary arithmetic coding Download PDF

Info

Publication number
US20090100251A1
US20090100251A1 US11/873,406 US87340607A US2009100251A1 US 20090100251 A1 US20090100251 A1 US 20090100251A1 US 87340607 A US87340607 A US 87340607A US 2009100251 A1 US2009100251 A1 US 2009100251A1
Authority
US
United States
Prior art keywords
bin
range
utilizing
coding engine
coding
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
Application number
US11/873,406
Other versions
US7522076B1 (en
Inventor
Pei-Wei Hsu
Chih-Hui Kuo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Priority to US11/873,406 priority Critical patent/US7522076B1/en
Assigned to MEDIATEK INC. reassignment MEDIATEK INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HSU, PEI-WEI, KUO, CHIH-HUI
Priority to TW097113477A priority patent/TWI354931B/en
Priority to CN200810093915.6A priority patent/CN101414830B/en
Publication of US20090100251A1 publication Critical patent/US20090100251A1/en
Application granted granted Critical
Publication of US7522076B1 publication Critical patent/US7522076B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code

Definitions

  • the present invention relates to statistical data compression, and more particularly to binary arithmetic coding.
  • Data compression works by encoding data according to a certain format to reduce the amount of data that needs to be transmitted in a system.
  • a decoder can then decode the encoded data utilizing the same format to convert the data back to their original state.
  • Arithmetic coding is a form of data compression that takes a plurality of symbols, processes them, and writes the codes to a file. Arithmetic coding utilizes probability estimation in order to code symbols, by assigning each symbol an interval of a range, wherein the range parameters are 0 and 1. In probability estimation, a symbol that has greater probability of appearing is assigned a greater part of the range, and a symbol that has less probability of appearing is assigned the smaller part of the range. This probability estimation will be described in more detail in the following.
  • a probability of symbol “1” is 0.4, and a probability of “0” is 0.6. Therefore, “0” is the most probable symbol (MPS) and “1” is the least probable symbol (LPS) in this example.
  • MPS most probable symbol
  • LPS least probable symbol
  • Binary arithmetic coding is a form of arithmetic coding that converts all symbols into binary form before processing.
  • the binary arithmetic coding process occurs in four stages.
  • the first stage is the binarization stage, where each symbol is converted into a binary value (bin), thereby forming a bin stream.
  • a context model (probability model) is chosen, based on previously coded bins.
  • each bin is coded according to a current context model, and in the fourth stage the context model is updated according to the coded bin.
  • the range value is a 9-bit value, wherein bit 9 is the most significant bit (MSB), and shows whether the range has fallen below 256 or not.
  • CABAC Context Adaptive Binary Arithmetic Coding
  • LPS look-up tables LUTs
  • a current context model and bits 7 and 8 of a current range are input to the LPS LUT and a predicted range value according to this information is output.
  • FIG. 1 is a diagram of a bin coding engine 100 .
  • the bin coding engine 100 comprises an LPS coding table 120 , a subtracter 130 , and an adder 140 .
  • a previous range and a context model are input to the LPS coding table 120 , which outputs a first LPS range according to this information.
  • the bin coding engine 100 also determines a first MPS range by subtracting the first LPS range from the previous range using the subtracter 130 .
  • a previous low value of the previous range is input to the bin coding engine 100 . If the current bin is an MPS, the low value will remain the same (please see the example in the above paragraph), so this value can be directly output. If the current bin is an LPS, however, the low value must be added to the first MPS range output from the subtracter 130 . This operation is performed by the adder 140 .
  • the present invention aims to provide a system and method for increasing the throughput of arithmetic coding engines.
  • An arithmetic coding system for coding at least two bins in a bin stream in parallel comprises: a first bin coding engine, for receiving a current range and utilizing said current range to calculate a range for a first bin in the bin stream; and a second bin coding engine, coupled in parallel to the first bin coding engine, for simultaneously utilizing the current range to forward predict a plurality of possible ranges for a second bin in the bin stream when the first bin is an MPS, and utilizing the calculated range for the first bin to select a resultant range and low for the second bin.
  • a method for performing parallel processing of at least two bins in an arithmetic coded bin stream comprises: utilizing a current range to calculate a range for a first bin in the bin stream; simultaneously utilizing the current range to forward predict a plurality of possible ranges and low values for a second bin in the bin stream when the first bin is an MPS; and when the range for the first bin is calculated, utilizing the calculated range to select a resultant range from the plurality of possible ranges and low values for the second bin.
  • FIG. 1 is a diagram of a bin coding engine according to the related art.
  • FIG. 2 is a diagram of a parallel coding system according to an exemplary embodiment of the present invention.
  • the present invention aims to increase the throughput of a bin coding engine by processing separate bins in parallel.
  • the present invention achieves this by utilizing forward prediction to determine a plurality of possible range values and low values for a second bin when a first bin is an MPS, then utilizing the determined range value of the first bin to select a resultant range value and low value for the second bin.
  • the parallel determination can be performed directly.
  • the bin coding engine 100 inputs a current range and a context model (probability) to the LPS coding table 120 and generates two possible ranges of a first bin, an LPS range and an MPS range. If the first bin is an LPS then the first range will be selected, whereas if the first bin is an MPS then the second range will be selected. Therefore, a second bin coding engine has two possible input ranges. Furthermore, each bin has an associated context model (probability), because the context model is updated according to whether a first bin is an MPS or an LPS.
  • the first bin is an LPS then the range and low value can be calculated directly because only one possible value will exist. If, however, the first bin is an MPS then the bin coding engines will have to utilize forward prediction to determine possible ranges and low values for a second bin coding engine.
  • bits 7 and 8 of the range are utilized as a key to access the LPS coding table 120 for outputting an LPS range for a next bin in the bin stream.
  • bits 7 and 8 could be four possible values, namely: ⁇ 0,0 ⁇ , ⁇ 0,1 ⁇ , ⁇ 1,0 ⁇ or ⁇ 1,1 ⁇ .
  • Each of these bit combinations will give rise to two possible ranges depending on whether the range requires renormalization, as the range used for the second bin will have been updated accordingly if it needs to be renormalized. Therefore, there are 8 possible outcomes for the range of the second bin.
  • FIG. 2 is a diagram of a parallel bin coding system according to an exemplary embodiment of the present invention.
  • the parallel bin coding system comprises a plurality of parallel bin coding engines 200 , 300 , and 400 .
  • the parallel bin coding engine 200 comprises a first bin coding engine 100 , and at least a second bin coding engine 220 comprising an LPS coding table 250 , and two 8 to 1 multiplexers (mux) 270 for choosing a final low value and a final range for the second bin from the eight possible results when the first bin is an MPS.
  • MPS 8 to 1 multiplexers
  • parallel bin coding engine 200 is shown as comprising a first bin coding engine 100 and a second bin coding engine 220 only, this is not a limitation of the present invention, and it will be appreciated by one skilled in the art that parallel bin coding engine 200 could comprise three or more bin coding engines without departing from the spirit of the present invention.
  • components of the first bin coding engine 100 having the same numerals as those shown in FIG. 1 also have the same function, and therefore further detail is omitted for brevity.
  • the first bin coding engine 100 When the current range and low value are received by the first bin coding engine 100 they are also simultaneously received by the second bin coding engine 220 .
  • the first bin is an MPS then eight possible values for the range and the low value must be calculated for the second bin. The eight possible values depend on bits 7 and 8 of the resultant range of the first bin, and also depend on whether the first bin is renormalized or not.
  • the 2 to 1 multiplexers 150 and 160 of the first bin coding engine 100 select an intermediate range and intermediate low value, and a renormalization block 170 selectively performs renormalization to the intermediate range and low value to generate the range and low value for the next bin.
  • the renormalization block 170 expands the range to fully use its bit length if the most significant bit (MSB) of the range is 0.
  • MSB most significant bit
  • An exemplary method of expanding the range when the first bin is an MPS is to left shift the value of the range by 1 bit.
  • Range_ 1 and Low_ 1 have been renormalized or not
  • the range and low value of the second bin can be correctly selected from the eight generated values.
  • This operation is performed by the two 8 to 1 multiplexers 270 , wherein the first 8 to 1 multiplexer selects the resultant range and the second 8 to 1 multiplexer selects the resultant low value from the eight generated values.
  • MSB of a nine-bit range is not a ‘1’, this indicates that the range has fallen below 256 and therefore needs to be renormalized before more coding can be carried out. This is achieved by left shifting the range by one bit for an MPS, and by as much as 7 bits for an LPS. This can be performed before the operation of the two 8 to 1 multiplexers 270 , i.e. all eight possible range values will be renormalized, or after the result of the first bin coding engine 100 is received. Both operations fall within the scope of the present invention.
  • the first bin coding engine 100 in FIG. 2 also comprises an LPS shift table 180 , two 2 to 1 multiplexers 150 , 160 , and a renormalization circuit 170 .
  • the LPS shift table 180 is utilized for determining how many bits the range needs to be shifted by during renormalizing, when the first bin is an LPS.
  • the two 2 to 1 multiplexers 150 , 160 output a range and a low value respectively for the first bin depending on whether the first bin is an LPS or an MPS.
  • the determined number of shift bits is input to the second bin coding engine 220 , as well as the context model, the range Range_ 0 and the low value Low_ 0 .
  • the second bin coding engine 220 utilizes the input number of shift bits to accurately determine the low value and range for the second bin when the first bin is an LPS. As in the first bin coding engine 100 , two possible ranges and two possible low values are generated, and then a resultant low value and range are selected, according to whether the second bin is an LPS or an MPS.
  • the second bin coding engine 220 will therefore forward predict eight possible values for the case where the first bin is an MPS, and also calculate two low values and two ranges for the case where the first bin is an LPS. (The two low values and two ranges correspond to the second bin being an LPS or an MPS.)
  • the second bin coding engine 220 can select from all predicted values to output a low value and a range for the second bin. These values can then be simultaneously input to a third bin coding engine and a fourth bin coding engine, and the operation will proceed as above.
  • the throughput of an arithmetic coding system can be improved.
  • the first bin is an LPS
  • calculation of a low value and range for the second bin can be performed directly.
  • the throughput of coding engines can be improved significantly. In one cycle a considerable number of bins can be coded. Therefore, the efficiency of the parallel bin coding system of the present invention has many advantages over the prior art.

Abstract

A method for performing parallel processing of at least two bins in an arithmetic coded bin stream includes: utilizing a current range to calculate a range for a first bin in the bin stream; simultaneously utilizing the current range to forward predict a plurality of possible ranges and low values for a second bin in the bin stream when the first bin is an MPS; when the range for the first bin is calculated, utilizing the calculated range to select a resultant range from the plurality of possible ranges and low values for the second bin.

Description

    BACKGROUND
  • The present invention relates to statistical data compression, and more particularly to binary arithmetic coding.
  • Data compression works by encoding data according to a certain format to reduce the amount of data that needs to be transmitted in a system. A decoder can then decode the encoded data utilizing the same format to convert the data back to their original state. Many examples of data compression exist, although developments and improvements to conventional techniques are constantly being made.
  • Arithmetic coding is a form of data compression that takes a plurality of symbols, processes them, and writes the codes to a file. Arithmetic coding utilizes probability estimation in order to code symbols, by assigning each symbol an interval of a range, wherein the range parameters are 0 and 1. In probability estimation, a symbol that has greater probability of appearing is assigned a greater part of the range, and a symbol that has less probability of appearing is assigned the smaller part of the range. This probability estimation will be described in more detail in the following.
  • For example, when coding a bin string “010”, a probability of symbol “1” is 0.4, and a probability of “0” is 0.6. Therefore, “0” is the most probable symbol (MPS) and “1” is the least probable symbol (LPS) in this example. Initially, a range is 200, and a low value is 0. When the first symbol “0” is coded, as the probability of “0” is 0.6, the range will be 0.6 of 200, or 120. Because the MPS occupies the lower part of the range, the low value will remain as 0. For the next symbol, the probability of “1” is 0.4, so the range now becomes 0.4 of 120, or 48. As the LPS occupies the upper part of the range, the new low value is 72. Finally, for the symbol “0”, the new range becomes 0.6 of 48, or 28.8, and the low value will remain the same.
  • Binary arithmetic coding is a form of arithmetic coding that converts all symbols into binary form before processing. The binary arithmetic coding process occurs in four stages. The first stage is the binarization stage, where each symbol is converted into a binary value (bin), thereby forming a bin stream. In the second stage, a context model (probability model) is chosen, based on previously coded bins. In the third stage, each bin is coded according to a current context model, and in the fourth stage the context model is updated according to the coded bin. In binary arithmetic coding, the range value is a 9-bit value, wherein bit 9 is the most significant bit (MSB), and shows whether the range has fallen below 256 or not.
  • Context Adaptive Binary Arithmetic Coding (CABAC) is a well-known form of arithmetic coding, that updates the probability each time a bin is coded, according to previously coded bins. CABAC utilizes LPS look-up tables (LUTs), containing a plurality of possible range values. A current context model and bits 7 and 8 of a current range are input to the LPS LUT and a predicted range value according to this information is output.
  • Please refer to FIG. 1. FIG. 1 is a diagram of a bin coding engine 100. The bin coding engine 100 comprises an LPS coding table 120, a subtracter 130, and an adder 140. Initially, a previous range and a context model are input to the LPS coding table 120, which outputs a first LPS range according to this information. The bin coding engine 100 also determines a first MPS range by subtracting the first LPS range from the previous range using the subtracter 130. Additionally, a previous low value of the previous range is input to the bin coding engine 100. If the current bin is an MPS, the low value will remain the same (please see the example in the above paragraph), so this value can be directly output. If the current bin is an LPS, however, the low value must be added to the first MPS range output from the subtracter 130. This operation is performed by the adder 140.
  • As can be seen from the above description, the coding operation for each bin is complicated. In the conventional art, as each bin must be coded sequentially, the throughput is limited.
  • SUMMARY
  • With this in mind, the present invention aims to provide a system and method for increasing the throughput of arithmetic coding engines.
  • An arithmetic coding system for coding at least two bins in a bin stream in parallel according to an exemplary embodiment of the present invention is disclosed. The system comprises: a first bin coding engine, for receiving a current range and utilizing said current range to calculate a range for a first bin in the bin stream; and a second bin coding engine, coupled in parallel to the first bin coding engine, for simultaneously utilizing the current range to forward predict a plurality of possible ranges for a second bin in the bin stream when the first bin is an MPS, and utilizing the calculated range for the first bin to select a resultant range and low for the second bin.
  • A method for performing parallel processing of at least two bins in an arithmetic coded bin stream is also disclosed. The method comprises: utilizing a current range to calculate a range for a first bin in the bin stream; simultaneously utilizing the current range to forward predict a plurality of possible ranges and low values for a second bin in the bin stream when the first bin is an MPS; and when the range for the first bin is calculated, utilizing the calculated range to select a resultant range from the plurality of possible ranges and low values for the second bin.
  • These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a diagram of a bin coding engine according to the related art.
  • FIG. 2 is a diagram of a parallel coding system according to an exemplary embodiment of the present invention.
  • DETAILED DESCRIPTION
  • As detailed above, the present invention aims to increase the throughput of a bin coding engine by processing separate bins in parallel. The present invention achieves this by utilizing forward prediction to determine a plurality of possible range values and low values for a second bin when a first bin is an MPS, then utilizing the determined range value of the first bin to select a resultant range value and low value for the second bin. When the first bin is an LPS the parallel determination can be performed directly.
  • Please refer to FIG. 1 again. As can be seen from the diagram, the bin coding engine 100 inputs a current range and a context model (probability) to the LPS coding table 120 and generates two possible ranges of a first bin, an LPS range and an MPS range. If the first bin is an LPS then the first range will be selected, whereas if the first bin is an MPS then the second range will be selected. Therefore, a second bin coding engine has two possible input ranges. Furthermore, each bin has an associated context model (probability), because the context model is updated according to whether a first bin is an MPS or an LPS.
  • If the first bin is an LPS then the range and low value can be calculated directly because only one possible value will exist. If, however, the first bin is an MPS then the bin coding engines will have to utilize forward prediction to determine possible ranges and low values for a second bin coding engine.
  • Case 1: First Bin is an MPS
  • As mentioned above, bits 7 and 8 of the range are utilized as a key to access the LPS coding table 120 for outputting an LPS range for a next bin in the bin stream. When the first bin is an MPS, as the range output from the first bin coding engine 100 is not yet known, bits 7 and 8 could be four possible values, namely: {0,0}, {0,1}, {1,0} or {1,1}. Each of these bit combinations will give rise to two possible ranges depending on whether the range requires renormalization, as the range used for the second bin will have been updated accordingly if it needs to be renormalized. Therefore, there are 8 possible outcomes for the range of the second bin. Similarly, there are 8 possible outcomes for the low value of the second bin corresponding to the 8 possible ranges of the second bin. One of the ranges and one of the low values of the second bin can be selected and ready for the next bin in the bin stream once the range of the first bin is determined. By generating all these outcomes for the second bin in parallel with the range generation of the first bin coding engine 100, the throughput can be increased considerably.
  • Please refer to FIG. 2. FIG. 2 is a diagram of a parallel bin coding system according to an exemplary embodiment of the present invention. The parallel bin coding system comprises a plurality of parallel bin coding engines 200, 300, and 400. For simplicity of illustration, only parallel bin coding engine 200 is shown in detail. The parallel bin coding engine 200 comprises a first bin coding engine 100, and at least a second bin coding engine 220 comprising an LPS coding table 250, and two 8 to 1 multiplexers (mux) 270 for choosing a final low value and a final range for the second bin from the eight possible results when the first bin is an MPS. Please note that, although parallel bin coding engine 200 is shown as comprising a first bin coding engine 100 and a second bin coding engine 220 only, this is not a limitation of the present invention, and it will be appreciated by one skilled in the art that parallel bin coding engine 200 could comprise three or more bin coding engines without departing from the spirit of the present invention. Please also note that components of the first bin coding engine 100 having the same numerals as those shown in FIG. 1 also have the same function, and therefore further detail is omitted for brevity.
  • When the current range and low value are received by the first bin coding engine 100 they are also simultaneously received by the second bin coding engine 220. In this embodiment, as the first bin is an MPS then eight possible values for the range and the low value must be calculated for the second bin. The eight possible values depend on bits 7 and 8 of the resultant range of the first bin, and also depend on whether the first bin is renormalized or not.
  • The 2 to 1 multiplexers 150 and 160 of the first bin coding engine 100 select an intermediate range and intermediate low value, and a renormalization block 170 selectively performs renormalization to the intermediate range and low value to generate the range and low value for the next bin. The renormalization block 170 expands the range to fully use its bit length if the most significant bit (MSB) of the range is 0. An exemplary method of expanding the range when the first bin is an MPS is to left shift the value of the range by 1 bit. When the range and low value of the first bin (Range_1 and Low_1) are received by the second bin coding engine 220, the Range_1 and Low_1 are shifted 6 bits to obtain bits 7 and 8 respectively. As it is also known whether Range_1 and Low_1 have been renormalized or not, the range and low value of the second bin (Range_2 and Low_2) can be correctly selected from the eight generated values. This operation is performed by the two 8 to 1 multiplexers 270, wherein the first 8 to 1 multiplexer selects the resultant range and the second 8 to 1 multiplexer selects the resultant low value from the eight generated values.
  • If the MSB of a nine-bit range is not a ‘1’, this indicates that the range has fallen below 256 and therefore needs to be renormalized before more coding can be carried out. This is achieved by left shifting the range by one bit for an MPS, and by as much as 7 bits for an LPS. This can be performed before the operation of the two 8 to 1 multiplexers 270, i.e. all eight possible range values will be renormalized, or after the result of the first bin coding engine 100 is received. Both operations fall within the scope of the present invention.
  • Case 2: First Bin is an LPS
  • Please refer to FIG. 1 and FIG. 2 together. As can be seen by comparing the two diagrams, the first bin coding engine 100 in FIG. 2 also comprises an LPS shift table 180, two 2 to 1 multiplexers 150, 160, and a renormalization circuit 170. The LPS shift table 180 is utilized for determining how many bits the range needs to be shifted by during renormalizing, when the first bin is an LPS. The two 2 to 1 multiplexers 150, 160 output a range and a low value respectively for the first bin depending on whether the first bin is an LPS or an MPS. Because this result is not known at the time of calculating the range and low value for the second bin, the determined number of shift bits is input to the second bin coding engine 220, as well as the context model, the range Range_0 and the low value Low_0.
  • The second bin coding engine 220 utilizes the input number of shift bits to accurately determine the low value and range for the second bin when the first bin is an LPS. As in the first bin coding engine 100, two possible ranges and two possible low values are generated, and then a resultant low value and range are selected, according to whether the second bin is an LPS or an MPS.
  • Putting the two cases together, the second bin coding engine 220 will therefore forward predict eight possible values for the case where the first bin is an MPS, and also calculate two low values and two ranges for the case where the first bin is an LPS. (The two low values and two ranges correspond to the second bin being an LPS or an MPS.) Once the determination of the first bin is known, the second bin coding engine 220 can select from all predicted values to output a low value and a range for the second bin. These values can then be simultaneously input to a third bin coding engine and a fourth bin coding engine, and the operation will proceed as above.
  • It will be clear to those skilled in the art that it is possible to code more than two bins in parallel by implementing a bin coding engine that forward predicts possible ranges and low values for a third bin, etc. then utilizes the calculated range of the previous bin for selecting a resultant range and low value. This also falls within the scope of the present invention.
  • By forward predicting possible ranges for a second bin at the same time as calculating a range for a first bin in a bin stream when the first bin is an MPS, the throughput of an arithmetic coding system can be improved. When the first bin is an LPS, calculation of a low value and range for the second bin can be performed directly. By simultaneously forward predicting possible ranges for many bins in a bin stream the throughput of coding engines can be improved significantly. In one cycle a considerable number of bins can be coded. Therefore, the efficiency of the parallel bin coding system of the present invention has many advantages over the prior art.
  • Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention.

Claims (17)

1. A method for performing parallel processing of at least two bins in an arithmetic coded bin stream, the method comprising:
utilizing a current range to calculate a range for a first bin in the bin stream;
when the first bin is an MPS, simultaneously utilizing the current range to forward predict a plurality of possible ranges and low values for a second bin in the bin stream;
when the range for the first bin is calculated, utilizing the calculated range to select a resultant range from the plurality of possible ranges and low values for the second bin.
2. The method of claim 1, wherein the step of utilizing the calculated range of the first bin to select a resultant range from the plurality of possible ranges for the second bin further comprises:
utilizing a value of a most significant bit (MSB) of the resultant range to selectively renormalize the resultant range for the second bin.
3. The method of claim 1, wherein the step of simultaneously utilizing the current range to forward predict a plurality of possible ranges for the second bin in the bin stream further comprises:
utilizing a value of a most significant bit (MSB) of each of the plurality of possible ranges to selectively renormalize each respective possible range.
4. The method of claim 1, wherein the arithmetic coding is utilized in an H.264 system.
5. The method of claim 1, wherein the step of utilizing a current range to calculate a range for a first bin in the bin stream further comprises:
utilizing a current low value and current range to calculate a low value for the first bin; and
the step of simultaneously utilizing the current range to forward predict a plurality of possible ranges and low values for a second bin in the bin stream further comprises:
simultaneously utilizing the current low value and current range to forward predict a plurality of possible low values for the second bin.
6. The method of claim 1, wherein the range for the first bin is renormalized if a most significant bit of the range is 0.
7. The method of claim 1, wherein when the first bin is an LPS a range and low value for the second bin can be calculated directly.
8. The method of claim 7, wherein when the first bin is an LPS the method further comprises:
determining a number of shift bits required for renormalizing a range for the first bin; and
utilizing the determined number of shift bits to determine the range and low value for the second bin.
9. An arithmetic coding system for coding at least two bins in a bin stream in parallel, the arithmetic coding system comprising:
a first bin coding engine, for receiving a current range and utilizing said current range to calculate a range for a first bin in the bin stream; and
a second bin coding engine, coupled in parallel to the first bin coding engine, for simultaneously utilizing the current range to forward predict a plurality of possible ranges for a second bin in the bin stream when the first bin is an MPS, and utilizing the calculated range for the first bin to select a resultant range and low for the second bin.
10. The system of claim 9, wherein the second bin coding engine comprises:
a coding table for receiving the current range and utilizing said current range to forward predict each of the plurality of possible ranges for the second bin of the bin stream; and the system further comprises:
a first 8 to 1 multiplexer, coupled to the first bin coding engine and the second bin coding engine, for receiving the plurality of possible ranges from the second bin coding engine and the calculated range for the first bin from the first bin coding engine, and utilizing the calculated range for the first bin to select the resultant range and low for the second bin.
11. The system of claim 10, wherein the plurality of possible ranges are selectively renormalized before being input to the 8 to 1 multiplexer.
12. The system of claim 10, wherein the first bin coding engine receives a current low value and utilizes said current range and low value to calculate a low value for the first bin; and the second bin coding engine simultaneously utilizes the current range and low value to forward predict a plurality of possible low values for the second bin when the first bin is an MPS, and utilizes the calculated range value for the first bin to select a resultant low value for the second bin.
13. The system of claim 12, wherein the second bin further comprises:
a second 8 to 1 multiplexer, coupled to the first bin coding engine and the second bin coding engine, for receiving the plurality of possible low values from the second bin coding engine and the calculated low value for the first bin from the first bin coding engine, and utilizing the calculated range value for the first bin to select the resultant low value for the second bin.
14. The system of claim 9 being utilized in an H.264 system.
15. The system of claim 9, wherein the first bin coding engine further comprises a renormalization block, for selectively renormalizing the range for the first bin based on a most significant bit of the range.
16. The system of claim 9, wherein when the first bin is an LPS the second bin coding engine calculates a range and low value for the second bin directly.
17. The system of claim 16, wherein the first bin coding engine further comprises an LPS shift table, for determining a number of shift bits required for renormalizing a range for the first bin, and inputting the determined number of shift bits to the second bin coding engine.
US11/873,406 2007-10-16 2007-10-16 Parallel context adaptive binary arithmetic coding Active US7522076B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US11/873,406 US7522076B1 (en) 2007-10-16 2007-10-16 Parallel context adaptive binary arithmetic coding
TW097113477A TWI354931B (en) 2007-10-16 2008-04-14 Method for parallel processing at least two bins a
CN200810093915.6A CN101414830B (en) 2007-10-16 2008-04-22 Method for parallelly processing at least two binary values and corresponding arithmetic coding system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/873,406 US7522076B1 (en) 2007-10-16 2007-10-16 Parallel context adaptive binary arithmetic coding

Publications (2)

Publication Number Publication Date
US20090100251A1 true US20090100251A1 (en) 2009-04-16
US7522076B1 US7522076B1 (en) 2009-04-21

Family

ID=40535343

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/873,406 Active US7522076B1 (en) 2007-10-16 2007-10-16 Parallel context adaptive binary arithmetic coding

Country Status (3)

Country Link
US (1) US7522076B1 (en)
CN (1) CN101414830B (en)
TW (1) TWI354931B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140169445A1 (en) * 2007-12-31 2014-06-19 Musa Jahanghir Systems and Apparatuses For Performing CABAC Parallel Encoding and Decoding

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4382840B2 (en) * 2007-08-20 2009-12-16 Nttエレクトロニクス株式会社 Binary arithmetic coding device
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
US20120014433A1 (en) * 2010-07-15 2012-01-19 Qualcomm Incorporated Entropy coding of bins across bin groups using variable length codewords
TWI487295B (en) * 2011-05-17 2015-06-01 Univ Nat Cheng Kung Method for high throughput parallel avc/h.264 context-based adaptive binary arithmetic decoder
US9558109B2 (en) 2014-04-04 2017-01-31 Samsung Israel Research Corporation Method and apparatus for flash memory arithmetic encoding and decoding
KR20180087771A (en) 2017-01-25 2018-08-02 삼성전자주식회사 Entropy encoder and video encoder including the same

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240214B1 (en) * 1998-02-27 2001-05-29 Daewoo Electronics Co., Ltd. Method and apparatus for encoding a binary shape signal
US6263024B1 (en) * 1996-12-12 2001-07-17 Matsushita Electric Industrial Co., Ltd. Picture encoder and picture decoder
US20020021234A1 (en) * 1998-03-25 2002-02-21 Taichi Yanagiya Encoding, decoding, and probability estimation method
US20060028359A1 (en) * 2004-08-05 2006-02-09 Samsung Electronics Co., Ltd. Context-based adaptive binary arithmetic coding method and apparatus
US20060158355A1 (en) * 2005-01-14 2006-07-20 Sungkyunkwan University Methods of and apparatuses for adaptive entropy encoding and adaptive entropy decoding for scalable video encoding
US7292731B2 (en) * 2001-06-29 2007-11-06 Ntt Docomo, Inc. Image encoder, image decoder, image encoding method, and image decoding method
US7336720B2 (en) * 2002-09-27 2008-02-26 Vanguard Software Solutions, Inc. Real-time video coding/decoding

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001067616A1 (en) * 2000-03-07 2001-09-13 Koninklijke Philips Electronics N.V. Arithmetic decoding of an arithmetically encoded information signal
KR100750165B1 (en) * 2006-02-22 2007-08-17 삼성전자주식회사 Cabac encoding method and apparatus using improved context model selection with better compression ratio, and cabac decoding method and apparatus
CN101005287A (en) * 2007-01-26 2007-07-25 北京中星微电子有限公司 Method, system and coding device for improving arithmetic coaing speed

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263024B1 (en) * 1996-12-12 2001-07-17 Matsushita Electric Industrial Co., Ltd. Picture encoder and picture decoder
US6240214B1 (en) * 1998-02-27 2001-05-29 Daewoo Electronics Co., Ltd. Method and apparatus for encoding a binary shape signal
US20020021234A1 (en) * 1998-03-25 2002-02-21 Taichi Yanagiya Encoding, decoding, and probability estimation method
US6411231B1 (en) * 1998-03-25 2002-06-25 Mitsubishi Denki Kabushiki Kaisha Encoding, decoding, and probability estimation method
US7292731B2 (en) * 2001-06-29 2007-11-06 Ntt Docomo, Inc. Image encoder, image decoder, image encoding method, and image decoding method
US7336720B2 (en) * 2002-09-27 2008-02-26 Vanguard Software Solutions, Inc. Real-time video coding/decoding
US20060028359A1 (en) * 2004-08-05 2006-02-09 Samsung Electronics Co., Ltd. Context-based adaptive binary arithmetic coding method and apparatus
US7079057B2 (en) * 2004-08-05 2006-07-18 Samsung Electronics Co., Ltd. Context-based adaptive binary arithmetic coding method and apparatus
US20060158355A1 (en) * 2005-01-14 2006-07-20 Sungkyunkwan University Methods of and apparatuses for adaptive entropy encoding and adaptive entropy decoding for scalable video encoding

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140169445A1 (en) * 2007-12-31 2014-06-19 Musa Jahanghir Systems and Apparatuses For Performing CABAC Parallel Encoding and Decoding
US9577668B2 (en) * 2007-12-31 2017-02-21 Intel Corporation Systems and apparatuses for performing CABAC parallel encoding and decoding

Also Published As

Publication number Publication date
CN101414830A (en) 2009-04-22
CN101414830B (en) 2015-02-18
US7522076B1 (en) 2009-04-21
TWI354931B (en) 2011-12-21
TW200919305A (en) 2009-05-01

Similar Documents

Publication Publication Date Title
US7522076B1 (en) Parallel context adaptive binary arithmetic coding
KR100750165B1 (en) Cabac encoding method and apparatus using improved context model selection with better compression ratio, and cabac decoding method and apparatus
US8542727B2 (en) Systems and apparatuses for performing CABAC parallel encoding and decoding
US7079057B2 (en) Context-based adaptive binary arithmetic coding method and apparatus
KR100717052B1 (en) Method of decoding syntax element in cabac decoder with parallel processing of binary arithmetic decoding and binarization matching, and decoding apparatus therefor
US20090219183A1 (en) Arithmetic decoding apparatus
US8604951B2 (en) System and method for optimizing context-adaptive binary arithmetic coding
KR20060012093A (en) Context-based adaptive binary arithmetic decoder of pipeline structure for high speed decoding operation
US7498960B2 (en) Programmable compute system for executing an H.264 binary decode symbol instruction
JP4893957B2 (en) Encoding device, decoding device, encoding method and program
CN101557517A (en) Decoder, decoding method and apparatus
US7525459B2 (en) Simplified programmable compute system for executing an H.264 binary decode symbol instruction
JP3593884B2 (en) Encoding device and decoding device
JP4327036B2 (en) Arithmetic code decoding method and apparatus
CN107277553B (en) Binary arithmetic coder
Nikara et al. Parallel multiple-symbol variable-length decoding
JP2013009167A (en) Entropy encoding apparatus, entropy decoding apparatus, entropy encoding method and entropy decoding method
JP4537089B2 (en) Variable length decoding apparatus and method, computer program, and computer readable storage medium
JP5201052B2 (en) Device for speeding up decoding of variable length codes
Hameed et al. A new lossless method of Huffman coding for text data compression and decompression process with FPGA implementation
US20140247165A1 (en) Method and system for de-binarization
KR102109768B1 (en) Cabac binary arithmetic encoder for high speed processing of uhd imge
JP3427651B2 (en) Arithmetic coding apparatus and flash processing method thereof
JP2017212709A (en) Multiple value arithmetic code decoder
KR20000013585A (en) Context based arithmetic encoder

Legal Events

Date Code Title Description
AS Assignment

Owner name: MEDIATEK INC., TAIWAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HSU, PEI-WEI;KUO, CHIH-HUI;REEL/FRAME:019971/0435

Effective date: 20071011

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12