sound_alsa.h
来自「安装 H323需要的pwlib库」· C头文件 代码 · 共 109 行
H
109 行
#include <ptlib.h>#define ALSA_PCM_NEW_HW_PARAMS_API 1#include <alsa/asoundlib.h>class PAudioDelay : public PObject{ PCLASSINFO(PAudioDelay, PObject); public: PAudioDelay(); BOOL Delay(int time); void Restart(); int GetError(); protected: PTime previousTime; BOOL firstTime; int error;};#define MIN_HEADROOM 30#define MAX_HEADROOM 60class SoundHandleEntry : public PObject { PCLASSINFO(SoundHandleEntry, PObject) public: SoundHandleEntry(); int handle; int direction; unsigned numChannels; unsigned sampleRate; unsigned bitsPerSample; unsigned fragmentValue; BOOL isInitialised;};#define LOOPBACK_BUFFER_SIZE 5000#define BYTESINBUF ((startptr<endptr)?(endptr-startptr):(LOOPBACK_BUFFER_SIZE+endptr-startptr))class PSoundChannelALSA: public PSoundChannel{ public: PSoundChannelALSA(); void Construct(); PSoundChannelALSA(const PString &device, PSoundChannel::Directions dir, unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); ~PSoundChannelALSA(); static PStringArray GetDeviceNames(PSoundChannel::Directions); static PString GetDefaultDevice(PSoundChannel::Directions); BOOL Open(const PString & _device, Directions _dir, unsigned _numChannels, unsigned _sampleRate, unsigned _bitsPerSample); BOOL Setup(); BOOL Close(); BOOL Write(const void * buf, PINDEX len); BOOL Read(void * buf, PINDEX len); BOOL SetFormat(unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); unsigned GetChannels() const; unsigned GetSampleRate() const; unsigned GetSampleSize() const; BOOL SetBuffers(PINDEX size, PINDEX count); BOOL GetBuffers(PINDEX & size, PINDEX & count); BOOL PlaySound(const PSound & sound, BOOL wait); BOOL PlayFile(const PFilePath & filename, BOOL wait); BOOL HasPlayCompleted(); BOOL WaitForPlayCompletion(); BOOL RecordSound(PSound & sound); BOOL RecordFile(const PFilePath & filename); BOOL StartRecording(); BOOL IsRecordBufferFull(); BOOL AreAllRecordBuffersFull(); BOOL WaitForRecordBufferFull(); BOOL WaitForAllRecordBuffersFull(); BOOL Abort(); BOOL SetVolume (unsigned); BOOL GetVolume (unsigned &); BOOL IsOpen() const; private: static void UpdateDictionary(PSoundChannel::Directions); BOOL Volume (BOOL, unsigned, unsigned &); PSoundChannel::Directions direction; PString device; unsigned mNumChannels; unsigned mSampleRate; unsigned mBitsPerSample; BOOL isInitialised; snd_pcm_t *os_handle; /* Handle, different from the PChannel handle */ int card_nr; int frame_bytes; /* Number of bytes in a frame */ snd_pcm_uframes_t period_size; unsigned int periods; PMutex device_mutex;};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?