123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #pragma once
- #include <pulse/pulseaudio.h>
- enum InitStatus {
- OK = 0,
- PLAYOUT_ERROR = 1,
- RECORDING_ERROR = 2,
- OTHER_ERROR = 3,
- NUM_STATUSES = 4
- };
- class AudioDevicePulse {
- public:
- AudioDevicePulse();
- virtual ~AudioDevicePulse();
- // Main initializaton and termination
- InitStatus Init();
- int32_t Terminate();
- bool Initialized() const;
-
- private:
- int32_t InitPulseAudio();
- int32_t TerminatePulseAudio();
- int32_t CheckPulseAudioVersion();
- int32_t InitSamplingFrequency();
- void PaLock();
- void PaUnLock();
- void WaitForOperationCompletion(pa_operation* paOperation) const;
- static void PaServerInfoCallback(pa_context* c, const pa_server_info* i, void* pthis);
- static void PaContextStateCallback(pa_context* c, void* pthis);
- void PaServerInfoCallbackHandler(const pa_server_info* i);
- void PaContextStateCallbackHandler(pa_context* c);
- private:
- bool m_initialized;
- pa_threaded_mainloop* m_paMainloop;
- pa_mainloop_api* m_paMainloopApi;
- pa_context* m_paContext;
- bool m_paStateChanged;
- char m_paServerVersion[32];
- int m_sample_rate_hz;
- };
|