GNU ccAudio2

From GNU Telephony


Introduction to GNU ccAudio2

GNU ccAudio2 is a stand-alone portable C++ class framework for manipulating audio data. It has existed for some time as GNU GPL licensed package and has most recently been designated a GNU package. It is commonly used in GNU Bayonne.

GNU ccAudio2 offers platform indipendent classes for directly accessing audio files from disk. These classes are endian aware and also, unlike some audio file manipulation libraries, content format aware; ccAudio treats audio as an array of descreat sample points rather than simply as binary data. ccAudio can also manipulate header information such as annotations. GNU ccAudio2 supports sun audio, raw samples, and RIFF encoded audio data.

In addition to manipulating audio thru disk files, GNU ccAudio2 can provide audio processing of sample sets in memory. This includes generation of pure tones, energy measurement of audio poackets, and software codec conversions. GNU ccAudio2 includes a framework for developing plugin audio codecs and is intended to be a carrier for freely licensed audio codecs as well as to expand into a general purpose audio/signal processing C++ library.

GNU ccAudio2 follows conventions from GNU Common C++ and uses GNU Common C++ configuration and macros to assure portability for both posix and win32 based systems. However, current releases of GNU ccaudio2 are usable stand-alone as it neither requires or uses any part of GNU Common C++ itself.

GNU ccAudio2 also includes a stand-alone command-line utility, audiotool. This can be used to convert and manipulate audio files using functions from the GNU ccAudio2 library.

Current Status

The current releases of GNU ccAudio2 have focused on expanding audio processing features and improving codec plugin support. Sample rate conversion has become part of recent releases, as well as new codecs for g.721 adpcm and oki/vox adpcm. Changes are being made in how codec plugins interact with the AudioStream class to better support packet synchronization when arbitraririly positioning into audio files, such as mp3, which have no fixed size packet structure.

Downloading and Documentation

Current releases of GNU ccAudio2 will be found on the GNU site or one of the GNU mirrors. It is also available from the Download Page.

GNU ccAudio2 may be available from other sites in various "package" formats, including GNU/Linux "RPM" and "deb" packages, ".pkg" files under various Unix operating systems, etc. I do encourage people to distribute GNU ccAudio2 in a package form where convenient for installation, so long as source is also made available.

Although stand-alone, online Documentation is maintained as part of the larger class framework documentation for GNU Telephony.

Contributing to GNU ccAudio2

As the current GNU ccAudio maintainer, I am very open to bringing new ideas and code into GNU ccAudio. In particular, I am looking for help from contributors for adding things like additional codecs and basic FFT operations. Anonymous cvs access is maintained for GNU ccaudio thru savannah, and I would be happy to receive and evaluate patches for inclusion in future releases. A standard e-mail mailing list for GNU ccAudio will be available shortly at Feel free to send any bug reports, patches, and questions to this list.