data compression link collection

Source Code

Compression algorithms that are illustrated using source code. Note that if a product is a library or program, I generally don’t include it here even if source is included.

x264 - a free h264/avc encoder

x264 is a free library for encoding H264/AVC video streams. It is released under the terms of the GPL license.

* * * *  

Posted in July 2nd, 2007

FFmpeg Streaming Multimedia System

The FFmpeg project consists of two main parts: FFmpeg, which encodes and decodes the multimedia streams, and FFserver, which provides streams via HTTP for various multimedia clients. FFMpeg is completely portable since it does not rely on proprietary DLLs. The library libavcodec, which contains all the ffmpeg codecs, can be reused in any program licensed under the GNU General Public License.

Version 0.4.9 is shipping in March, 2007.

* * * * *

Posted in June 30th, 2007

Quasar DV Codec: libdv

The Quasar DV codec (libdv) is a software codec for DV video, the encoding format used by most digital camcorders, typically those that support the IEEE 1394 (a.k.a. FireWire or i.Link) interface. Libdv was developed according to the official standards for DV video: IEC 61834 and SMPTE 314M.

Version 1.0 shipped in March, 2005.


Posted in June 30th, 2007

VLC - the cross-platform media player

VLC is an Open Source multimedia player that supports your usual mix of audio and video formats. Support is currently included for MPEG-1, -2, -4, h.264, mp3, ogg and more. The site includes precompiled binaries for a really nice range of platforms, including Windows, Mac OS X, varios Linux flavors, and even BeOS!

Version 0.8.6 of this player is shipping as of June, 2007.

* * * ½  

Posted in June 30th, 2007

FFDShow Codec

FFDShow is DirectShow and VFW codec for decoding/encoding many video and audio formats, including DivX and XviD movies using libavcodec, xvid and other opensourced libraries with a rich set of postprocessing filters.


Posted in June 29th, 2007 - Home of the XviD Codec

This project is developing an open source MPEG-4 codec. The code is currently ported to Solaris, Win32, and Linux.

Version 1.1.3 is shipping in June, 2007.


Posted in June 29th, 2007

Arithmetic Coding revealed - A guided tour from theory to praxis

An updated and translated version of our German paper “Proseminar Datenkompression - Arithmetische Kodierung” from 2001. To the best of our knowledge, it is the first comprehensive paper that describes the whole way from the basic principles of AC up to a simple implementation, fully documented with C++ source code.

* * * * ½

Posted in November 6th, 2004

Zip and Unzip Using VB5 or VB6

Some sample code and a tutorial explaining how to use the InfoZip DLLs with VB.


Posted in September 12th, 2004

Fractal Image Compression for Spaceborne Transputers

A dissertation by Keith Howell which evaluates the suitability of Fractal Compression for spacecraft images. Keith says he is willing to supply source code upon request.

* * * * ½

Posted in July 29th, 2004


This program tries to unpack the given file by application of several algorithms byte-by-byte. Result of work of the program is the set of files with the unpacked data. Many of the produced files are not correct. However, among them there can be correctly unpacked data. Correctly unpacked files have mainly significant sizes that distinguishes them from dust.


Posted in July 28th, 2004

Ch zlib Package

Ch zlib Package is Ch interface to zlib. Ch is a C/C++ interpretive freely available from htpp:// Ch zlib Package alllows zlib applications with compression and decompression function runs in Ch across platform without compilation. Ch zlib Package includes the source code for building the binding to zlib.

* * * *  

Posted in July 28th, 2004


A compressor built with the world-beating PAQAR 3.0 compressor. axPAQ wraps a GUI around the engine, and includes complete source.


Posted in July 16th, 2004

Taking Advantage of libpng

Reputedly an excellent set of resources for using libpng - but don’t take my word for it - my Japanese is non-existent.


Posted in July 10th, 2004


Use the zipdiff tool when you need to compare the contents of two zip files. It is equally suited for comparing jar files, EAR files, WAR files or RAR files. Run it standalone or as an Ant task. The tool supports three output formats: plain text, XML, and HTML. zipdiff is written in Java.

Release 0.4 is shipping as of June, 2004.


Posted in July 4th, 2004


A video conferencing project for Windows PCs using an H.263 video codec.


Posted in July 4th, 2004

Loading JPG & PNG resources using GDI+

An article on the CodeProject detailing a user’s troubles with GDI+. In particular, he found that he was unable to load JPG or PNG files stored as resources with GDI+. This article presents a way to make it happen.

This article was updated June 17, 204.


Posted in June 27th, 2004


This project is an attempt to port the free Speex voice codec to a pure Java implementation.

Version 0.9.4 is shipping as of June, 2004.


Posted in June 27th, 2004

A Compressed Bitset Class

We have developed the CMJBitset class as a plug-in replacement for bitset. The CMJBitset classm depending on compilation optionsm may take as little as 7 bytes to represent a bitset of any size, assuming all the bits are set or reset. In comparision, a 1024 bitset will take 128 bytes. In essence, the CMJBitset operates by run length encoding a bitset if the bitset is either almost all set/reset, but otherwise uses the STL bitset class.

* * * * *

Posted in June 27th, 2004

Zip Utils - clean, elegant, simple, C++/win32

This source code shows how to add zip/unzip functionality to your programs. Claim to fame: simplicity and clean packaging.


Posted in June 24th, 2004

MemoryStream Compression

An article that describes MemoryStream based Compression based on SharpZipLib.

Last updated June 21, 2004.


Posted in June 21st, 2004


Markus Kuhn has this to say about it: I wrote the freely available JBIG-KIT 1.2 portable ANSI C library, which implements a highly effective lossless bi-level image compression algorithm based on context sensitive arithmetic coding. The JBIG algorithm (specified in ITU-T Recommendation T.82), which is implemented in this library, is especially suitable for compressing scanned documents and fax pages. You can also download the (unfortunately German) project report (Studienarbeit) that I wrote about JBIG-KIT (abstract).

Release 1.6 available as of 6/2004.


Posted in June 20th, 2004

XMLPPM: XML-Conscious PPM Compression

Published in Source Code, PPM

An open source project that performs PPM compression on XML files. The advance knowledge of XML format helps give this algorithm somewhat better compressions ratios on XML data than universal compressors.

Version 0.98.1 was shipping as of June, 2004.


Posted in June 13th, 2004

An Image Decoder Based on IImgCtx

This article shows how to decode images with IImgCtx interface provided by IE. In addition to the image types decoded with the IPictur einterface, IImgCtx also decodes TIFF and PNG.


Posted in June 6th, 2004

Huffman Coding Class

This version of file encoder and decoder program is based on the Huffman coding method. It explicitly demonstrates the details of the files during the encoding and decoding. The algorithm is encapsulated in a class En_Decode in standard C++.

* *      

Posted in June 6th, 2004

LZW Compression

An article that describes itself as showing how to implement LZW compression in MFC.

* * * * *

Posted in June 2nd, 2004

A Generic, Reusable Diff Algorithm in C# - II

Another difference engine in C#.

* *      

Posted in May 31st, 2004

Code to extract plain text from a PDF file

PDF documents are commonly used and their content is usually compressed. This article shows a simple C code that can be used to extract plain text from the PDF file.


Posted in May 31st, 2004


Pack all your files into a single executable with MoleBox or MoleBox Pro.


Posted in May 24th, 2004

JZlib — zlib in pure Java

This project is an attempt to hoist zlib out of the C world and into pure Java land. This allows Java developers to take advantage of a few zlib features that aren’t available in the standard JDK packages. LGPL license.

Version 1.0.5 of Jzlib was shipping as of May, 2004.


Posted in May 22nd, 2004

bsdtar, libarchive

Libarchive is a programming library that can create and read several different streaming archive formats, including most popular tar variants and the POSIX cpio format. The bsdtar program is an implementation of tar(1) that is built on top of libarchive. It started as a test harness, but is quickly moving toward becoming a candidate system tar for FreeBSD


Posted in May 22nd, 2004