CIOS Audio Core is a free, cross platform and embeddable C++ abstract audio streaming interface. It enables you to use simple C++ program to access audio streamings. The same code can run on many platforms, including Windows, Unix(ALSA/OSS/Jack), Mac OS X, Android and iPhone OS.
CIOS Audio Core adapts a pretty simple interface to play or record audio. It uses 'Host API' to write the underlying audio API on multiple platforms. Applications can write the same code and run on all platforms, makes handling audio a very easy task.
Besides regular library(Unix libCaCore.a, Windows CaCore.lib),CIOS Audio Core can be embedded into C++ applications, which is the most encouraged form of CIOS Audio Core. There are special no-brainer settings for Qt, makes Qt programmers extremely easy to write an audio applications. The whole library contains only two files(CiosAudio.hpp and CaCore.lib or libCaCore.a in Unix). For most audio application programmers, CIOS Audio Core is one of the best choices and simplest audio interface options.
CIOS Audio Core was originally designed for CIOS Sensor Grid(Collective Intelligence Operating System), specifically for audio streaming system. The original scheme is rather complicated. The open source version of CIOS Audio Core is considered very simple and easy, complexity and dependency was greatly reduced. The goal is make most of audio code completed in 1~10 C++ code.
Supports FFmpeg. CIOS Audio Core treats
FFmpeg(and VideoLAN VLC) as an audio input/output
device, therefore we can use the concept of audio device
to read and write audio streaming from files. The
mechanism greatly reduced the complexity of an audio
file decoding and encoding process. Normal audio
application programmers do not need to have a great deal of knowledge
about FFmpeg or VideoLAN VLC to read and write audio
file formats.
It is strongly encouraged to embed the source code into
your program rather than using a compiled library(such
as libCaCore.a and CaCore.lib). All you need to do
is to pick what you need, and include them into your
program. Most components are carefully separated
at the beginning of the design. Most 'Host API'
will not affect each other, what you need to do is find
out what need to be included into your C++
program. If you do not require FFmpeg support, or
you have your own code on FFmpeg or VLC, just disable
FFMPEGLIB. The code are very carefully separated.
Also, there are some other programming language
bindings. Read the documents and find out which
one is what your need.