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.
http://videolan.org/developers/x264.html
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.
http://ffmpeg.sourceforge.net/
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.
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.
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.
http://sourceforge.net/projects/ffdshow
XviD.org - 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.
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.
http://www.sable.mcgill.ca/~ebodde/pubs/sable-tr-2007-5.pdf
Zip and Unzip Using VB5 or VB6
Some sample code and a tutorial explaining how to use the InfoZip DLLs with VB.
http://www.codeguru.com/vb/gen/vb_graphics/fileformats/article.php/c6743/
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.
http://www.howell1964.freeserve.co.uk/MSc/FIC/FIC_00.htm
Stuns
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.
http://falinc.narod.ru/Stuns.zip
Ch zlib Package
Ch zlib Package is Ch interface to zlib. Ch is a C/C++ interpretive freely available from htpp://www.softintegration.com. 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.
http://chzlib.sourceforge.net/
axPAQ
A compressor built with the world-beating PAQAR 3.0 compressor. axPAQ wraps a GUI around the engine, and includes complete source.
http://www.alphaxsoftware.com/downloads/
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.
http://www5.cds.ne.jp/~kato/png/
Zipdiff
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.
http://zipdiff.sourceforge.net/
VideoNet
A video conferencing project for Windows PCs using an H.263 video codec.
http://codeproject.com/internet/videonet.asp
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.
http://www.codeproject.com/vcpp/gdiplus/cgdiplusbitmap.asp
Jspeex
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.
http://sourceforge.net/projects/jspeex/
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.
http://codeguru.com/Cpp/Cpp/cpp_mfc/bits/article.php/c7429/
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.
http://codeproject.com/file/zip_utils.asp
MemoryStream Compression
An article that describes MemoryStream based Compression based on SharpZipLib.
Last updated June 21, 2004.
http://codeproject.com/useritems/mscompression.asp
JBIG Kit
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.
http://www.cl.cam.ac.uk/~mgk25/jbigkit/
XMLPPM: XML-Conscious PPM Compression
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.
http://www.cs.cornell.edu/People/jcheney/xmlppm/xmlppm.html
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.
http://codeproject.com/bitmap/JianImgCtxDecoder.asp
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++.
http://codeproject.com/cpp/HandyHuffmanCoding.asp
LZW Compression
An article that describes itself as showing how to implement LZW compression in MFC.
http://codeproject.com/cpp/LZWCompression.asp
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.
http://www.codeproject.com/cpp/ExtractPDFText.asp
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.
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
http://people.freebsd.org/~kientzle/libarchive/