CIPR / RPI Homepage of Amir Said


FastAC: Arithmetic Coding Implementation

This page provides the links to the source code and documentation of a new implementation of arithmetic coding called FastAC, which was designed with the following objectives:
  1. Many students and researchers are still using my very first implementation of arithmetic coding, which is now hopelessly obsolete. The new version is much faster and convenient (see this graph with speed comparisons). While it represents the state-of-the-art of arithmetic coding in terms of speed and efficiency, it also uses C++ features to enable an easy and seamless integration into compression applications.
  2. The code can be used as a companion to my Introduction to Arithmetic Coding [1,2], enabling students to understand how arithmetic coding works, and some of its implementation problems and solutions. While this may seem a contradiction with the first objective (truly efficient vs. simple), it happens that the new AC implementations can actually be both, thanks to the fact that they basically use… arithmetic, which is supported with great efficiency and low cost in most current processor (including those for embedded systems, DSP, etc.) [1,2,3].
  3. It can be used (I hope) to eliminate some misconceptions about the computational complexity of arithmetic coding. It is basically the code used for the experiments in ref. [3], in which we compare the speed of different types of implementations, and stress the need to consider the encoder/decoder information throughput as a measure of efficiency and speed.

Distribution Files

References [2] and [3] are downloadable from the HP Labs Technical Reports site. The PDF files are, respectively, HPL-2004-76 and HPL-2004-75.

References

[1] Amir Said,
"Arithmetic Coding," in Lossless Compression Handbook, (K. Sayood, Ed.), Academic Press, San Diego, CA, 2003.
[2] Amir Said,
Introduction to Arithmetic Coding Theory and Practice, Hewlett-Packard Laboratories Report, HPL-2004-76, Palo Alto, CA, April 2004.
[3] Amir Said,
Comparative Analysis of Arithmetic Coding Computational Complexity, Hewlett-Packard Laboratories Report, HPL-2004-75, Palo Alto, CA, April 2004.

FastHF: Static and Adaptive Huffman Coding

We decided to also make the source code of our C++ implementation of Huffman coding publicly available for education. Its design objectives and interface (and documentation) are very similar to FastAC. Thus, except for the lack of binary coders, porting from one to the other should be quite easy. In addition, they are completely independent, i.e., both can be used in the same compression program.

Distribution Files


Site Index

Bio Page
Journal Page
Compound Images and Video
Structured Scalable Metaformats
Virtual Environment Design Automation
Set Partitioning in Hierarchical Trees
SPIE/IS&T Conf. on Image and Video Communications and Processing
Other Links