ccAudio
ost::AudioDevice Class Referenceabstract

#include <audio2.h>

Inheritance diagram for ost::AudioDevice:
ost::AudioBase ost::Audio

Public Member Functions

virtual ~AudioDevice ()
 
virtual unsigned putSamples (Linear buffer, unsigned count)=0
 Copy linear samples to an audio device through its virtual.
 
virtual unsigned getSamples (Linear buffer, unsigned count)=0
 Copy linear samples from an audio device through its virtual.
 
virtual ssize_t putBuffer (Encoded data, size_t count)
 Copy audio encoded in the currently selected encoding for the audio device.
 
virtual ssize_t getBuffer (Encoded data, size_t count)
 Record audio encoded in the currently selected encoding for the audio device.
 
virtual bool setEncoded (Info &info)
 Use encoding source descriptor to select the audio encoding format the audio device should be using.
 
virtual bool setAudio (Rate rate=rate8khz, bool stereo=false, timeout_t framing=20)=0
 Set properties for audio device.
 
virtual void sync (void)
 Synchronize timing for audio device to next audio frame.
 
virtual void flush (void)=0
 Flush any pending buffered samples in audio device.
 
unsigned bufMono (Linear buffer, unsigned count)
 Process linear mono audio and automatically convert to the encoding format the audio device is currently using.
 
unsigned bufStereo (Linear buffer, unsigned count)
 Process linear stereo audio and automatically convert to the encoding format the audio device is currently using.
 
InfogetInfo (void)
 Get audio device source descriptor in effect for the device.
 
bool isEnabled (void)
 Whether device is currently enabled.
 
- Public Member Functions inherited from ost::AudioBase
 AudioBase ()
 Create audio base object with no info.
 
 AudioBase (Info *info)
 Create audio base object with audio source description.
 
virtual ~AudioBase ()
 Destroy an audio base object.
 
Encoding getEncoding (void)
 Generic get encoding.
 
unsigned getSampleRate (void)
 Generic sample rate.
 
ssize_t putNative (Encoded data, size_t size)
 Puts raw data and does native to refined endian swapping if needed based on encoding type and local machine endian.
 
ssize_t getPacket (Encoded data)
 Get's a packet of audio data.
 
ssize_t getNative (Encoded data, size_t size)
 Get raw data and assure is in native machine endian.
 

Protected Attributes

bool enabled
 
- Protected Attributes inherited from ost::AudioBase
Info info
 

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).
 
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 AudioDevicegetDevice (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 inherited from ost::Audio
static const unsigned ndata
 

Constructor & Destructor Documentation

◆ ~AudioDevice()

virtual ost::AudioDevice::~AudioDevice ( )
inlinevirtual

Member Function Documentation

◆ bufMono()

unsigned ost::AudioDevice::bufMono ( Linear buffer,
unsigned count )

Process linear mono audio and automatically convert to the encoding format the audio device is currently using.

If needed, automatically convert from mono to stereo.

Returns
number of samples played.
Parameters
bufferto linear mono audio data to play.
countof linear mono audio samples to play.

◆ bufStereo()

unsigned ost::AudioDevice::bufStereo ( Linear buffer,
unsigned count )

Process linear stereo audio and automatically convert to the encoding format the audio device is currently using.

If needed, automatically convert from stereo to mono.

Returns
number of samples played.
Parameters
bufferto linear stereo audio data to play.
countof linear stereo audio samples to play.

◆ flush()

virtual void ost::AudioDevice::flush ( void )
pure virtual

Flush any pending buffered samples in audio device.

◆ getBuffer()

virtual ssize_t ost::AudioDevice::getBuffer ( Encoded data,
size_t count )
virtual

Record audio encoded in the currently selected encoding for the audio device.

Parameters
databuffer for recording encoded audio.
countof encoded bytes to record.
Returns
number of encoded bytes recorded.

Implements ost::AudioBase.

◆ getInfo()

Info * ost::AudioDevice::getInfo ( void )
inline

Get audio device source descriptor in effect for the device.

Returns
audio device descriptor.

◆ getSamples()

virtual unsigned ost::AudioDevice::getSamples ( Linear buffer,
unsigned count )
pure virtual

Copy linear samples from an audio device through its virtual.

Parameters
bufferfor recording.
countof audio samples to record.
Returns
number of audio samples recorded.

◆ isEnabled()

bool ost::AudioDevice::isEnabled ( void )
inline

Whether device is currently enabled.

If invalid audio settings are selected, it will be disabled until supported values are supplied.

Returns
enable state.
See also
setAudio #setInfo

◆ putBuffer()

virtual ssize_t ost::AudioDevice::putBuffer ( Encoded data,
size_t count )
virtual

Copy audio encoded in the currently selected encoding for the audio device.

Parameters
datapointer to encoded data to play.
countof encoded bytes to play.
Returns
number of encoded bytes played.

Implements ost::AudioBase.

◆ putSamples()

virtual unsigned ost::AudioDevice::putSamples ( Linear buffer,
unsigned count )
pure virtual

Copy linear samples to an audio device through its virtual.

Parameters
bufferto linear audio data to play.
countof audio samples to play.
Returns
number of audio samples played.

◆ setAudio()

virtual bool ost::AudioDevice::setAudio ( Rate rate = rate8khz,
bool stereo = false,
timeout_t framing = 20 )
pure virtual

Set properties for audio device.

Parameters
rateof audio samples device should operate at.
stereoflag.
framingtimer for default i/o framing for device.
Returns
false if settings not supported by device.

◆ setEncoded()

virtual bool ost::AudioDevice::setEncoded ( Info & info)
inlinevirtual

Use encoding source descriptor to select the audio encoding format the audio device should be using.

Returns
false if encoding format specified is unsupported by device
Parameters
infosource description for device settings.

◆ sync()

virtual void ost::AudioDevice::sync ( void )
inlinevirtual

Synchronize timing for audio device to next audio frame.

this is needed for audio devices which do not block i/o to assure one does not push too much data before the device can handle it.

Member Data Documentation

◆ enabled

bool ost::AudioDevice::enabled
protected

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