ccAudio
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ost::AudioTone Class Reference

The AudioTone class is used to create a frame of audio encoded single or dualtones. More...

#include <audio2.h>

Inheritance diagram for ost::AudioTone:
ost::Audio ost::DTMFTones ost::MFTones ost::TelTone

Public Member Functions

Rate getRate (void)
 Get the sample encoding rate being used for the tone generator. More...
 
size_t getSamples (void)
 Get the frame size for the number of audio samples generated. More...
 
bool isSilent (void)
 Test if the tone generator is currently set to silence. More...
 
virtual Linear getFrame (void)
 Iterate the tone frame, and extract linear samples in native frame. More...
 
unsigned getFrames (Linear buffer, unsigned number)
 This is used to copy one or more pages of framed audio quickly to an external buffer. More...
 
virtual bool isComplete (void)
 See if at end of tone. More...
 
 AudioTone (timeout_t duration=20, Rate rate=rate8khz)
 Construct a silent tone generator of specific frame size. More...
 
 AudioTone (unsigned f1, unsigned f2, Level l1, Level l2, timeout_t duration=20, Rate sample=rate8khz)
 Construct a dual tone frame generator. More...
 
 AudioTone (unsigned freq, Level level, timeout_t duration=20, Rate sample=rate8khz)
 Construct a single tone frame generator. More...
 
virtual ~AudioTone ()
 

Protected Member Functions

void silence (void)
 Set the frame to silent. More...
 
void reset (void)
 Reset the tone generator completely. More...
 
void cleanup (void)
 Cleanup for virtual destructors to use. More...
 
void single (unsigned freq, Level level)
 Set frame to generate single tone... More...
 
void dual (unsigned f1, unsigned f2, Level l1, Level l2)
 Set frame to generate dual tone... More...
 

Protected Attributes

Rate rate
 
unsigned samples
 
Linear frame
 
double df1
 
double df2
 
double p1
 
double p2
 
Level m1
 
Level m2
 
bool silencer
 

Additional Inherited Members

- Public Types inherited from ost::Audio
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 inherited from ost::Audio
static Level tolevel (float dbm)
 Convert dbm power level to integer value (0-32768). More...
 
static float todbm (Level power)
 Convert integer power levels to dbm. More...
 
static bool hasDevice (unsigned device=0)
 Test for the presense of a specified (indexed) audio device. More...
 
static AudioDevicegetDevice (unsigned device=0, DeviceMode mode=PLAY)
 Get a audio device object that can be used to play or record audio. More...
 
static const char * getCodecPath (void)
 Get pathname to where loadable codec modules are stored. More...
 
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. More...
 
static const char * getName (Encoding encoding)
 Get the short ascii description used for the given audio encoding type. More...
 
static const char * getExtension (Encoding encoding)
 Get the preferred file extension name to use for a given audio encoding type. More...
 
static Encoding getEncoding (const char *name)
 Get the audio encoding format that is specified by a short ascii name. More...
 
static Encoding getStereo (Encoding encoding)
 Get the stereo encoding format associated with the given format. More...
 
static Encoding getMono (Encoding encoding)
 Get the mono encoding format associated with the given format. More...
 
static bool isLinear (Encoding encoding)
 Test if the audio encoding format is a linear one. More...
 
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. More...
 
static bool isMono (Encoding encoding)
 Test if the audio encoding format is a mono format. More...
 
static bool isStereo (Encoding encoding)
 Test if the audio encoding format is a stereo format. More...
 
static Rate getRate (Encoding encoding)
 Return default sample rate associated with the specified audio encoding format. More...
 
static Rate getRate (Encoding e, Rate request)
 Return optional rate setting effect. More...
 
static timeout_t getFraming (Encoding encoding, timeout_t timeout=0)
 Return frame timing for an audio encoding format. More...
 
static timeout_t getFraming (Info &info, timeout_t timeout=0)
 Return frame time for an audio source description. More...
 
static bool isEndian (Encoding encoding)
 Test if the endian byte order of the encoding format is different from the machine's native byte order. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
static Level getImpulse (Encoding encoding, void *buffer, unsigned number)
 Get the energey impulse level of a frame of audio data. More...
 
static Level getImpulse (Info &info, void *buffer, unsigned number=0)
 Get the energey impulse level of a frame of audio data. More...
 
static Level getPeak (Encoding encoding, void *buffer, unsigned number)
 Get the peak (highest energy) level found in a frame of audio data. More...
 
static Level getPeak (Info &info, void *buffer, unsigned number=0)
 Get the peak (highest energy) level found in a frame of audio data. More...
 
static void toTimestamp (timeout_t duration, char *address, size_t size)
 Provide ascii timestamp representation of a timeout value. More...
 
static timeout_t toTimeout (const char *timestamp)
 Convert ascii timestamp representation to a timeout number. More...
 
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. More...
 
static int getCount (Encoding encoding)
 Returns the number of samples in all channels for a frame in the given encoding. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
static bool loadPlugin (const char *path)
 Load a dso plugin (codec plugin), used internally... More...
 
static size_t maxFramesize (Info &info)
 Maximum framesize for a given coding that may be needed to store a result. More...
 
- Static Public Attributes inherited from ost::Audio
static const unsigned ndata
 

Detailed Description

The AudioTone class is used to create a frame of audio encoded single or dualtones.

The frame will be iterated for each request, so a continual tone can be extracted by frame.

Author
David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m audio tone generator class.

Constructor & Destructor Documentation

◆ AudioTone() [1/3]

ost::AudioTone::AudioTone ( timeout_t  duration = 20,
Rate  rate = rate8khz 
)

Construct a silent tone generator of specific frame size.

Parameters
durationof frame in milliseconds.
rateof samples.

◆ AudioTone() [2/3]

ost::AudioTone::AudioTone ( unsigned  f1,
unsigned  f2,
Level  l1,
Level  l2,
timeout_t  duration = 20,
Rate  sample = rate8khz 
)

Construct a dual tone frame generator.

Parameters
f1frequency of tone 1.
f2frequency of tone 2.
l1level of tone 1.
l2level of tone 2.
durationof frame in milliseconds.
samplerate being generated.

◆ AudioTone() [3/3]

ost::AudioTone::AudioTone ( unsigned  freq,
Level  level,
timeout_t  duration = 20,
Rate  sample = rate8khz 
)

Construct a single tone frame generator.

Parameters
freqof tone.
levelof tone.
durationof frame in milliseconds.
samplerate being generated.

◆ ~AudioTone()

virtual ost::AudioTone::~AudioTone ( )
virtual

Member Function Documentation

◆ cleanup()

void ost::AudioTone::cleanup ( void  )
protected

Cleanup for virtual destructors to use.

◆ dual()

void ost::AudioTone::dual ( unsigned  f1,
unsigned  f2,
Level  l1,
Level  l2 
)
protected

Set frame to generate dual tone...

Parameters
f1frequency of tone 1
f2frequency of tone 2
l1level of tone 1
l2level of tone 2

◆ getFrame()

virtual Linear ost::AudioTone::getFrame ( void  )
virtual

Iterate the tone frame, and extract linear samples in native frame.

If endian flag passed, then convert for standard endian representation (byte swap) if needed.

Returns
pointer to samples.

Reimplemented in ost::MFTones, ost::DTMFTones, and ost::TelTone.

◆ getFrames()

unsigned ost::AudioTone::getFrames ( Linear  buffer,
unsigned  number 
)

This is used to copy one or more pages of framed audio quickly to an external buffer.

Returns
number of frames copied.
Parameters
bufferto copy into.
numberof frames requested.

◆ getRate()

Rate ost::AudioTone::getRate ( void  )
inline

Get the sample encoding rate being used for the tone generator.

Returns
sample rate in samples per second.

◆ getSamples()

size_t ost::AudioTone::getSamples ( void  )
inline

Get the frame size for the number of audio samples generated.

Returns
number of samples processed in frame.

◆ isComplete()

virtual bool ost::AudioTone::isComplete ( void  )
virtual

See if at end of tone.

This is used for non-continues audio tones, or to detect "break" events.

Returns
true if end of data.

Reimplemented in ost::MFTones, ost::DTMFTones, and ost::TelTone.

◆ isSilent()

bool ost::AudioTone::isSilent ( void  )

Test if the tone generator is currently set to silence.

Returns
true if generator set for silence.

◆ reset()

void ost::AudioTone::reset ( void  )
protected

Reset the tone generator completely.

Produces silence.,

◆ silence()

void ost::AudioTone::silence ( void  )
protected

Set the frame to silent.

◆ single()

void ost::AudioTone::single ( unsigned  freq,
Level  level 
)
protected

Set frame to generate single tone...

Parameters
freqof tone.
levelof tone.

Member Data Documentation

◆ df1

double ost::AudioTone::df1
protected

◆ df2

double ost::AudioTone::df2
protected

◆ frame

Linear ost::AudioTone::frame
protected

◆ m1

Level ost::AudioTone::m1
protected

◆ m2

Level ost::AudioTone::m2
protected

◆ p1

double ost::AudioTone::p1
protected

◆ p2

double ost::AudioTone::p2
protected

◆ rate

Rate ost::AudioTone::rate
protected

◆ samples

unsigned ost::AudioTone::samples
protected

◆ silencer

bool ost::AudioTone::silencer
protected

The documentation for this class was generated from the following file: