ccAudio
|
Generic audio class to hold master data types and various useful class encapsulated friend functions as per GNU Common C++ 2 coding standard. More...
#include <audio2.h>
Classes | |
struct | dtmf_detect_state_t |
struct | goertzel_state_t |
class | Info |
Audio source description. More... | |
struct | mpeg_audio |
struct | mpeg_tagv1 |
struct | tone_detection_descriptor_t |
Public Types | |
enum | Rate { rateUnknown, rate6khz = 6000, rate8khz = 8000, rate16khz = 16000, rate32khz = 32000, rate44khz = 44100 } |
Audio encoding rate, samples per second. More... | |
enum | Mode { modeRead, modeReadAny, modeReadOne, modeWrite, modeCache, modeInfo, modeFeed, modeAppend, modeCreate } |
File processing mode, whether to skip missing files, etc. More... | |
enum | Encoding { unknownEncoding = 0, g721ADPCM, g722Audio, g722_7bit, g722_6bit, g723_2bit, g723_3bit, g723_5bit, gsmVoice, msgsmVoice, mulawAudio, alawAudio, mp1Audio, mp2Audio, mp3Audio, okiADPCM, voxADPCM, sx73Voice, sx96Voice, cdaStereo, cdaMono, pcm8Stereo, pcm8Mono, pcm16Stereo, pcm16Mono, pcm32Stereo, pcm32Mono, speexVoice, speexAudio, g729Audio, ilbcAudio, speexUltra, speexNarrow = speexVoice, speexWide = speexAudio, g723_4bit = g721ADPCM } |
Audio encoding formats. More... | |
enum | Format { raw, snd, riff, mpeg, wave } |
Audio container file format. More... | |
enum | DeviceMode { PLAY, RECORD, PLAYREC } |
Audio device access mode. More... | |
enum | Error { errSuccess = 0, errReadLast, errNotOpened, errEndOfFile, errStartOfFile, errRateInvalid, errEncodingInvalid, errReadInterrupt, errWriteInterrupt, errReadFailure, errWriteFailure, errReadIncomplete, errWriteIncomplete, errRequestInvalid, errTOCFailed, errStatFailed, errInvalidTrack, errPlaybackFailed, errNotPlaying, errNoCodec } |
Audio error conditions. More... | |
typedef int16_t | snd16_t |
typedef int32_t | snd32_t |
typedef int16_t | Level |
typedef int16_t | Sample |
typedef int16_t * | Linear |
typedef unsigned long | timeout_t |
typedef unsigned char * | Encoded |
typedef enum Rate | Rate |
typedef enum Mode | Mode |
typedef enum Encoding | Encoding |
typedef enum Format | Format |
typedef enum DeviceMode | DeviceMode |
typedef enum Error | Error |
Static Public Member Functions | |
static Level | tolevel (float dbm) |
Convert dbm power level to integer value (0-32768). | |
static float | todbm (Level power) |
Convert integer power levels to dbm. | |
static bool | hasDevice (unsigned device=0) |
Test for the presense of a specified (indexed) audio device. | |
static AudioDevice * | getDevice (unsigned device=0, DeviceMode mode=PLAY) |
Get a audio device object that can be used to play or record audio. | |
static const char * | getCodecPath (void) |
Get pathname to where loadable codec modules are stored. | |
static const char * | getMIME (Info &info) |
Get the mime descriptive type for a given Audio encoding description, usually retrieved from a newly opened audio file. | |
static const char * | getName (Encoding encoding) |
Get the short ascii description used for the given audio encoding type. | |
static const char * | getExtension (Encoding encoding) |
Get the preferred file extension name to use for a given audio encoding type. | |
static Encoding | getEncoding (const char *name) |
Get the audio encoding format that is specified by a short ascii name. | |
static Encoding | getStereo (Encoding encoding) |
Get the stereo encoding format associated with the given format. | |
static Encoding | getMono (Encoding encoding) |
Get the mono encoding format associated with the given format. | |
static bool | isLinear (Encoding encoding) |
Test if the audio encoding format is a linear one. | |
static bool | isBuffered (Encoding encoding) |
Test if the audio encoding format must be packetized (that is, has irregular sized frames) and must be processed only through buffered codecs. | |
static bool | isMono (Encoding encoding) |
Test if the audio encoding format is a mono format. | |
static bool | isStereo (Encoding encoding) |
Test if the audio encoding format is a stereo format. | |
static Rate | getRate (Encoding encoding) |
Return default sample rate associated with the specified audio encoding format. | |
static Rate | getRate (Encoding e, Rate request) |
Return optional rate setting effect. | |
static timeout_t | getFraming (Encoding encoding, timeout_t timeout=0) |
Return frame timing for an audio encoding format. | |
static timeout_t | getFraming (Info &info, timeout_t timeout=0) |
Return frame time for an audio source description. | |
static bool | isEndian (Encoding encoding) |
Test if the endian byte order of the encoding format is different from the machine's native byte order. | |
static bool | isEndian (Info &info) |
Test if the endian byte order of the audio source description is different from the machine's native byte order. | |
static bool | swapEndian (Encoding encoding, void *buffer, unsigned number) |
Optionally swap endian of audio data if the encoding format endian byte order is different from the machine's native endian. | |
static void | swapEncoded (Info &info, Encoded data, size_t bytes) |
Optionally swap endian of encoded audio data based on the audio encoding type, and relationship to native byte order. | |
static bool | swapEndian (Info &info, void *buffer, unsigned number) |
Optionally swap endian of audio data if the audio source description byte order is different from the machine's native endian byte order. | |
static Level | getImpulse (Encoding encoding, void *buffer, unsigned number) |
Get the energey impulse level of a frame of audio data. | |
static Level | getImpulse (Info &info, void *buffer, unsigned number=0) |
Get the energey impulse level of a frame of audio data. | |
static Level | getPeak (Encoding encoding, void *buffer, unsigned number) |
Get the peak (highest energy) level found in a frame of audio data. | |
static Level | getPeak (Info &info, void *buffer, unsigned number=0) |
Get the peak (highest energy) level found in a frame of audio data. | |
static void | toTimestamp (timeout_t duration, char *address, size_t size) |
Provide ascii timestamp representation of a timeout value. | |
static timeout_t | toTimeout (const char *timestamp) |
Convert ascii timestamp representation to a timeout number. | |
static int | getFrame (Encoding encoding, int samples=0) |
Returns the number of bytes in a sample frame for the given encoding type, rounded up to the nearest integer. | |
static int | getCount (Encoding encoding) |
Returns the number of samples in all channels for a frame in the given encoding. | |
static unsigned long | toSamples (Encoding encoding, size_t bytes) |
Compute byte counts of audio data into number of samples based on the audio encoding format used. | |
static unsigned long | toSamples (Info &info, size_t bytes) |
Compute byte counts of audio data into number of samples based on the audio source description used. | |
static size_t | toBytes (Info &info, unsigned long number) |
Compute the number of bytes a given number of samples in a given audio encoding will occupy. | |
static size_t | toBytes (Encoding encoding, unsigned long number) |
Compute the number of bytes a given number of samples in a given audio encoding will occupy. | |
static void | fill (unsigned char *address, int number, Encoding encoding) |
Fill an audio buffer with "empty" (silent) audio data, based on the audio encoding format. | |
static bool | loadPlugin (const char *path) |
Load a dso plugin (codec plugin), used internally... | |
static size_t | maxFramesize (Info &info) |
Maximum framesize for a given coding that may be needed to store a result. | |
Static Public Attributes | |
static const unsigned | ndata |
Generic audio class to hold master data types and various useful class encapsulated friend functions as per GNU Common C++ 2 coding standard.
typedef enum DeviceMode ost::Audio::DeviceMode |
typedef unsigned char* ost::Audio::Encoded |
typedef enum Encoding ost::Audio::Encoding |
typedef enum Error ost::Audio::Error |
typedef enum Format ost::Audio::Format |
typedef int16_t ost::Audio::Level |
typedef int16_t* ost::Audio::Linear |
typedef enum Mode ost::Audio::Mode |
typedef enum Rate ost::Audio::Rate |
typedef int16_t ost::Audio::Sample |
typedef int16_t ost::Audio::snd16_t |
typedef int32_t ost::Audio::snd32_t |
typedef unsigned long ost::Audio::timeout_t |
Audio device access mode.
enum ost::Audio::Encoding |
Audio encoding formats.
enum ost::Audio::Error |
Audio error conditions.
enum ost::Audio::Format |
Audio container file format.
enum ost::Audio::Mode |
enum ost::Audio::Rate |
Audio encoding rate, samples per second.
static void ost::Audio::fill | ( | unsigned char * | address, |
int | number, | ||
Encoding | encoding | ||
) | [static] |
Fill an audio buffer with "empty" (silent) audio data, based on the audio encoding format.
address | of data to fill. |
number | of samples to fill. |
encoding | format of data. |
static const char* ost::Audio::getCodecPath | ( | void | ) | [static] |
Get pathname to where loadable codec modules are stored.
static int ost::Audio::getCount | ( | Encoding | encoding | ) | [static] |
Returns the number of samples in all channels for a frame in the given encoding.
For example, pcm32Stereo has a frame size of 8 bytes: Note that different codecs have different definitions of a frame - for example, compressed encodings have a rather large frame size relative to the sample size due to the way bytes are fed to the decompression engine.
encoding | The encoding to calculate the frame sample count for. |
static AudioDevice* ost::Audio::getDevice | ( | unsigned | device = 0 , |
DeviceMode | mode = PLAY |
||
) | [static] |
Get a audio device object that can be used to play or record audio.
This is normally a local soundcard, though an abstract base class is returned, so the underlying device may be different.
device | index or 0 for default audio device. |
mode | of device; play, record, or full duplex. |
static Encoding ost::Audio::getEncoding | ( | const char * | name | ) | [static] |
Get the audio encoding format that is specified by a short ascii name.
This will either accept names like those returned from getName(), or .xxx file extensions, and return the audio encoding type associated with the name or extension.
name | of encoding or file extension. |
static const char* ost::Audio::getExtension | ( | Encoding | encoding | ) | [static] |
Get the preferred file extension name to use for a given audio encoding type.
encoding | format. |
static int ost::Audio::getFrame | ( | Encoding | encoding, |
int | samples = 0 |
||
) | [static] |
Returns the number of bytes in a sample frame for the given encoding type, rounded up to the nearest integer.
A frame is defined as the minimum number of bytes necessary to create a point or points in the output waveform for all output channels. For example, 16-bit mono PCM has a frame size of two (because those two bytes constitute a point in the output waveform). GSM has it's own definition of a frame which involves decompressing a sequence of bytes to determine the final points on the output waveform. The minimum number of bytes you can feed to the decompression engine is 32.5 (260 bits), so this function will return 33 (because we round up) given an encoding type of GSM. Other compressed encodings will return similar results. Be prepared to deal with nonintuitive return values for rare encodings.
encoding | The encoding type to get the frame size for. |
samples | Reserved. Use zero. |
Return frame timing for an audio encoding format.
encoding | of frame to get timing segment for. |
timeout | of frame time segment to request. |
Return frame time for an audio source description.
info | descriptor of frame encoding to get timing segment for. |
timeout | of frame time segment to request. |
Get the energey impulse level of a frame of audio data.
info | encoding source description object. |
buffer | of audio data to examine. |
number | of audio samples to examine. |
Get the energey impulse level of a frame of audio data.
encoding | format of data to examine. |
buffer | of audio data to examine. |
number | of audio samples to examine. |
static const char* ost::Audio::getMIME | ( | Info & | info | ) | [static] |
Get the mime descriptive type for a given Audio encoding description, usually retrieved from a newly opened audio file.
info | source description object |
Get the mono encoding format associated with the given format.
encoding | format. |
static const char* ost::Audio::getName | ( | Encoding | encoding | ) | [static] |
Get the short ascii description used for the given audio encoding type.
encoding | format. |
Get the peak (highest energy) level found in a frame of audio data.
encoding | format of data. |
buffer | of audio data. |
number | of samples to examine. |
Get the peak (highest energy) level found in a frame of audio data.
info | description object of audio data. |
buffer | of audio data. |
number | of samples to examine. |
Return default sample rate associated with the specified audio encoding format.
encoding | format. |
Return optional rate setting effect.
Many codecs are fixed rate.
encoding | format. |
requested | rate. |
Get the stereo encoding format associated with the given format.
encoding | format being tested for stereo. |
static bool ost::Audio::hasDevice | ( | unsigned | device = 0 | ) | [static] |
Test for the presense of a specified (indexed) audio device.
This is normally used to test for local soundcard access.
device | index or 0 for default audio device. |
static bool ost::Audio::isBuffered | ( | Encoding | encoding | ) | [static] |
Test if the audio encoding format must be packetized (that is, has irregular sized frames) and must be processed only through buffered codecs.
encoding | format. |
static bool ost::Audio::isEndian | ( | Encoding | encoding | ) | [static] |
Test if the endian byte order of the encoding format is different from the machine's native byte order.
encoding | format. |
static bool ost::Audio::isEndian | ( | Info & | info | ) | [static] |
Test if the endian byte order of the audio source description is different from the machine's native byte order.
info | source description object. |
static bool ost::Audio::isLinear | ( | Encoding | encoding | ) | [static] |
Test if the audio encoding format is a linear one.
encoding | format. |
static bool ost::Audio::isMono | ( | Encoding | encoding | ) | [static] |
Test if the audio encoding format is a mono format.
encoding | format. |
static bool ost::Audio::isStereo | ( | Encoding | encoding | ) | [static] |
Test if the audio encoding format is a stereo format.
encoding | format. |
static bool ost::Audio::loadPlugin | ( | const char * | path | ) | [static] |
Load a dso plugin (codec plugin), used internally...
path | to codec. |
static size_t ost::Audio::maxFramesize | ( | Info & | info | ) | [static] |
Maximum framesize for a given coding that may be needed to store a result.
info | source description object. |
Optionally swap endian of encoded audio data based on the audio encoding type, and relationship to native byte order.
info | source description of object. |
buffer | of audio data. |
number | of bytes of audio data. |
static bool ost::Audio::swapEndian | ( | Encoding | encoding, |
void * | buffer, | ||
unsigned | number | ||
) | [static] |
Optionally swap endian of audio data if the encoding format endian byte order is different from the machine's native endian.
encoding | format of data. |
buffer | of audio data. |
number | of audio samples. |
static bool ost::Audio::swapEndian | ( | Info & | info, |
void * | buffer, | ||
unsigned | number | ||
) | [static] |
Optionally swap endian of audio data if the audio source description byte order is different from the machine's native endian byte order.
info | source description object of data. |
buffer | of audio data. |
number | of audio samples. |
static size_t ost::Audio::toBytes | ( | Info & | info, |
unsigned long | number | ||
) | [static] |
Compute the number of bytes a given number of samples in a given audio encoding will occupy.
info | encoding source description. |
number | of samples. |
static size_t ost::Audio::toBytes | ( | Encoding | encoding, |
unsigned long | number | ||
) | [static] |
Compute the number of bytes a given number of samples in a given audio encoding will occupy.
encoding | format. |
number | of samples. |
static float ost::Audio::todbm | ( | Level | power | ) | [static] |
Convert integer power levels to dbm.
power | level. |
static Level ost::Audio::tolevel | ( | float | dbm | ) | [static] |
Convert dbm power level to integer value (0-32768).
dbm | power level |
static unsigned long ost::Audio::toSamples | ( | Encoding | encoding, |
size_t | bytes | ||
) | [static] |
Compute byte counts of audio data into number of samples based on the audio encoding format used.
encoding | format. |
bytes | of data. |
static unsigned long ost::Audio::toSamples | ( | Info & | info, |
size_t | bytes | ||
) | [static] |
Compute byte counts of audio data into number of samples based on the audio source description used.
info | encoding source description. |
bytes | of data. |
static timeout_t ost::Audio::toTimeout | ( | const char * | timestamp | ) | [static] |
Convert ascii timestamp representation to a timeout number.
timestamp | ascii data. |
static void ost::Audio::toTimestamp | ( | timeout_t | duration, |
char * | address, | ||
size_t | size | ||
) | [static] |
Provide ascii timestamp representation of a timeout value.
duration | timeout value |
address | for ascii data. |
size | of ascii data. |
const unsigned ost::Audio::ndata [static] |