28#ifndef ASYNC_AUDIO_DEVICE_INCLUDED
29#define ASYNC_AUDIO_DEVICE_INCLUDED
38#include <sigc++/sigc++.h>
364 static const int DEFAULT_SAMPLE_RATE = INTERNAL_SAMPLE_RATE;
365 static const size_t DEFAULT_CHANNELS = 2;
366 static const size_t DEFAULT_BLOCK_COUNT_HINT = 4;
367 static const size_t DEFAULT_BLOCK_SIZE_HINT = 256;
369 static std::map<std::string, AudioDevice*> devices;
373 std::list<AudioIO*> aios;
376 void reopenDevice(
void);
Contains a single shot or periodic timer that emits a signal on timeout.
Base class for handling audio devices.
int sampleRate(void) const
Return the sample rate.
virtual size_t writeBlocksize(void)=0
Find out what the write (playback) blocksize is set to.
virtual int samplesToWrite(void) const =0
Find out how many samples there are in the output buffer.
virtual void audioToWriteAvailable(void)=0
Tell the audio device handler that there are audio to be written in the buffer.
static void setChannels(size_t channels)
Set the number of channels used when doing future opens.
static AudioDevice * registerAudioIO(const std::string &dev_designator, AudioIO *audio_io)
Register an AudioIO object with the given device name.
void setDeviceError(void)
Called by the device object to indicate an error condition.
static void setBlockCount(size_t count)
Set the buffer count used when opening audio devices.
const std::string & devName(void) const
Return the device name.
bool open(Mode mode)
Open the audio device.
virtual bool openDevice(Mode mode)=0
Open the audio device.
static size_t getChannels(void)
Get the number of channels used for future opens.
virtual void closeDevice(void)=0
Close the audio device.
virtual void flushSamples(void)=0
static size_t block_count_hint
size_t getBlocks(int16_t *buf, size_t block_cnt)
Read samples from upper layers to write to audio device.
void close(void)
Close the audio device.
static void setBlocksize(size_t size)
Set the blocksize used when opening audio devices.
static void unregisterAudioIO(AudioIO *audio_io)
Unregister a previously registered AudioIO object.
static size_t block_size_hint
virtual bool isFullDuplexCapable(void)=0
Check if the audio device has full duplex capability.
AudioDevice(const std::string &dev_name)
Constuctor.
Mode
The different modes to open a device in.
@ MODE_NONE
No mode. The same as close.
@ MODE_RDWR
Both read and write.
Mode mode(void) const
Get the current operating mode of this audio device.
virtual ~AudioDevice(void)
Destructor.
virtual size_t readBlocksize(void)=0
Find out what the read (recording) blocksize is set to.
static void setSampleRate(int rate)
Set the sample rate used when doing future opens.
void putBlocks(int16_t *buf, size_t frame_cnt)
Write samples read from audio device to upper layers.
A class for handling audio input/output to an audio device.
A class that produces timer events.
@ TYPE_PERIODIC
A timer that restarts itself every time it expires.
Namespace for the asynchronous programming classes.