• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

autoconf/H13-Dec-2015-14,89711,570

inc/H13-Dec-2015-2,7631,066

src/H03-May-2022-8,9247,133

utils/H03-May-2022-2,9782,505

AUTHORSH A D28-Mar-2015145 73

COPYINGH A D11-Jan-201534.2 KiB677553

COPYING.LESSERH A D11-Jan-20157.5 KiB166128

ChangeLogH A D04-Aug-20151.4 KiB5641

INSTALLH A D11-Jan-201515.2 KiB366284

Makefile.amH A D23-Jun-20151.3 KiB4627

Makefile.inH A D13-Dec-201529.7 KiB942829

NEWSH A D11-Jan-2015846 2917

PKGBUILD.inH A D10-Mar-2015503 2421

READMEH A D28-Mar-20154.5 KiB8069

SUPPORTH A D11-Jan-2015214 105

THANKSH A D11-Jan-2015377 97

TODOH A D11-Jan-201584 83

aclocal.m4H A D13-Dec-2015349.3 KiB9,9418,955

autogen.shH A D28-Mar-20152.5 KiB10070

ccaudio2-config.h.cmakeH A D11-Jan-2015957 2521

ccaudio2-config.h.inH A D13-Dec-20153.2 KiB12387

ccaudio2.pc.inH A D10-Mar-2015210 86

ccaudio2.specH A D13-Dec-20153 KiB10267

ccaudio2.spec.inH A D28-Mar-20153 KiB10283

cmake-abi.shH A D04-Aug-2015889 2411

configureH A D13-Dec-2015592.8 KiB19,90816,859

configure.acH A D13-Dec-20154.2 KiB158132

directive.inH A D11-Jan-201568 43

README

1Copyright (C) 2006-2014 by David Sugar and Tycho Softworks.
2Copyright (C) 2015 Cherokees of Idaho.
3
4Verbatim copying and distribution of this entire article is permitted
5in any medium, provided this notice is preserved.
6
7The current release of GNU ccAudio2 is used in conjunction with the GNU uCommon
8C++ library.  1.x versions of GNU ccAudio2 were completely stand-alone.
9Starting with release 1.0.0, GNU ccAudio2 is now licensed using the GNU Lesser
10General Public License 3.0 or later.
11
12Starting with 0.5.1, GNU ccAudio2 dependended on GNU Common C++ for common
13configuration.  This allowed us to use GNU Common C++ macros for exporting
14win32 dll headers, and enables the use of GNU Common C++ services such as
15DSO loading and threads in GNU ccAudio.  This is continued in GNU ccAudio2
162.0, which uses the newer GNU uCommon C++ library base.
17
18The GNU ccAudio library is a portable C++ class framework that I believe
19to be useful for developing applications that must process audio.  This
20library provides a class framework for accessing audio segments from
21various audio file formats (.au, .wav, etc) and for creation of audio
22frame buffers that are then passed to audio devices and/or DSP processing
23systems such as telephony cards.
24
25This library was started out because I could not find any suitable
26free C++ based "sound file access" library.  There are several very good C
27based GPL sound file access libraries, and in particular libsndfile and
28audiofile come to mind.  There are also several good free C++ "audio
29frameworks", but all were concerned with driving a soundcard device or
30specific set of devices rather than offering usable stand-alone general
31purpose audio manipulation services.  Rather than having the overhead
32of a "C++ wrapper" around an existing C based library, I choose to create
33a new one from scratch.
34
35This framework initially will provide a portable means to access sound
36files stored in various formats, and may well extend to supporting
37playback and recording through default audio devices such as
38"OSS" soundcard drivers and win32 sound api's in the future.  While I am
39also the maintainer for GNU Common C++, ccaudio does not depend in any
40manner on GNU Common C++ and can be used fully stand-alone as well as with
41other class frameworks, including GNU Common C++.  However, ccaudio does
42follow certain GNU Common C++ naming conventions, including the use of
43-lccaudio for the library name and the placement of a header file in
44"include/cc++".
45
46One important consideration to keep in mind when using this library is
47that most operations are performed on objects that are considered an array
48of "samples" that may be aligned in descreat groupings depending on
49the codec involved.  Most ccaudio operations treat audio as essentially
50an array of "sample" sized objects rather than providing byte aligned
51operations.  This sometimes leads to confusion in other byte oriented
52operation libraries, such as when manipulating things that are chunked in
53peculiar size arrangements.  For example, ccaudio conceptually treats GSM
54encoded audio as 33 byte long collections of "160" samples.  This has
55important implications and alignment of audio file positioning functions
56such as setPosition and getPosition, as well as what it means to "read" or
57"write" x samples through the getSamples and putSamples member functions
58of AudioFile.
59
60Another unique aspect of this library is that it deals with and supports
61frame aligned operations.  This is based on the assumption that most
62"low level" sound resources and audio manipulations also will perform
63operations on discreat and aligned frames rather than samples of
64arbitrary size.  A good example of this kind of audio processing is found
65in Linux "/dev/phone" based devices such as the Quicknet card which aligns
66all physical I/O operations into samples that represent 30ms frames.  This
67means that ccaudio supports concepts for "joining" or concatinating
68multiple audio file sources when building a frame and the end of file has
69been reached early, and for automatically filling incomplete frames with
70"silent" data as needed to pad for something that is to be submitted to a
71frame oriented audio device or DSP processor.
72
73The GNU ccAudio library is designed to compile either on win32 (using
74either mingw32 or Visual C++) or most "Posix" systems including the GNU
75operating system itself, GNU/Linux systems, FreeBSD, etc, and it does so
76in  a fairly simple manner.  This framework is free software and is
77subject to the terms of the GNU Public License with explicit exceptions as
78noted in the source similar to the exclusions offered by Guile.
79
80