The OST ccAudio library is a portable C++ class framework that I believe
to be useful for developing applications that must process audio.  This
library provides a class framework for accessing audio segments from
various audio file formats (.au, .wav, etc) and for creation of audio
frame buffers that are then passed to audio devices and/or DSP processing
systems such as telephony cards.

As this is still in very early release, do not expect too much to actually
work as yet.  Currently, AudioFile only supports raw or "sun" audio
(.au) files, and only a few file encoding schemes, as well as a few
utility helper functions.  This library will grow very quickly however.
I have already added generic support for a new CDAudio class based on
Peter Wang's libcda and will probably add native soundcard audio device
support as well.  

This library was started out because I could not find any suitable
free C++ based "sound file access" library.  There are several very good C
based GPL sound file access libraries, and in particular libsndfile and
audiofile come to mind.  There are also several good free C++ "audio
frameworks", but all were concerned with driving a soundcard device or
specific set of devices rather than offering usable stand-alone general
purpose audio file manipulation services.  Rather than having the overhead
of a "C++ wrapper" around an existing C based library, I choose to create
a new one from scratch.

This framework initially will provide a portable means to access sound
files stored in various formats, and may well extend to supporting
playback and recording through default audio devices such as 
"OSS" soundcard drivers and win32 sound api's in the future.  While I am
also the maintainer for Common C++, ccaudio does not depend in any manner
on Common C++ and can be used fully stand-alone as well as with other
class frameworks, including Common C++.  However, ccaudio does follow
certain Common C++ naming conventions, including the use of -lccaudio for
the library name and the placement of a header file in "include/cc++".

One important consideration to keep in mind when using this library is
that most operations are performed on objects that are considered an array
of "samples" that may be aligned in descreat groupings depending on
the codec involved.  Most ccaudio operations treat audio as essentially
an array of "sample" sized objects rather than providing byte aligned 
operations.  This sometimes leads to confusion in other byte oriented
operation libraries, such as when manipulating things that are chunked in
peculiar size arrangements.  For example, ccaudio conceptually treats GSM
encoded audio as 33 byte long collections of "160" samples.  This has
important implications and alignment of audio file positioning functions
such as setPosition and getPosition, as well as what it means to "read" or
"write" x samples through the getSamples and putSamples member functions
of AudioFile.

Another unique aspect of this library is that it deals with and supports
frame aligned operations.  This is based on the assumption that most
"low level" sound resources and audio manipulations also will perform
operations on discreat and aligned frames rather than samples of
arbitrary size.  A good example of this kind of audio processing is found
in Linux "/dev/phone" based devices such as the Quicknet card which aligns
all physical I/O operations into samples that represent 30ms frames.  This
means that ccaudio supports concepts for "joining" or concatinating
multiple audio file sources when building a frame and the end of file has
been reached early, and for automatically filling incomplete frames with
"silent" data as needed to pad for something that is to be submitted to a
frame oriented audio device or DSP processor.

The OST ccaudio library is designed to compile either on win32 (using 
either mingw32 or Visual C++) or most "Posix" systems, and it does so in a
fairly simple manner.  This framework is free software and is subject to
the terms of the GNU Public License with explicit exceptions as noted in
the source similar to the exclusions offered by Guile and essentially
similar to LGPL.
  
