What is it?
The VideoCodec library performs video compression and decompression. The codec (coder/decoder) is modular and configurable. If you're interested in video compression in general you may also find the documentation on this site informative.
This is my project for Part II of the University of Cambridge Computer Science tripos.
The documentation on this site explains the theory behind previous and current image and video compression standards (JPEG, MPEG-1/2/4, H.264) and refers to, justifies and explains the implementation of these features in the VideoCodec library.
The library makes use of Magick++ and, optionally, Matlab for analysis and reporting. The library and command-line utility have been tested on Linux using the GNU C++ compiler.
Why is this useful?
- The documentation on this site explains the various algorithms involved with links into the source code for the codec. This is useful to those trying to understand video compression and encoding.
- Although the codec is not currently MPEG compliant, it has been written with reference to the MPEG and related standards documents: MPEG-1, MPEG-2, MPEG-4 and H.264. The code elucidates many sections of these documents and provides an example of implementing parts of the encoding side.
- I have written the C++ source code for the compression and decompression with readability in mind. Each separate algorithm in the process is easily accessible in its own module, with the aim that users may easily make changes and see their effect on the performance in terms of data compression and speed of encoding/decoding.
Getting started
The documentation for VideoCodec explains how to use the library and utility, how to modify the implementation and how the various parts of the codec work.
Download the source code
The source code will be available for download during soon. You can view the source code now in your webbrowser.
The documentation and code on this site are licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 License.