#include "audiodevicepulse.h" #include #include using namespace std; AudioDevicePulse::AudioDevicePulse() { m_initialized = false; m_paStateChanged = false; memset(m_paServerVersion, 0, 32); m_sample_rate_hz = 44100; } AudioDevicePulse::~AudioDevicePulse() { } InitStatus AudioDevicePulse::Init() { if (m_initialized) { return InitStatus::OK; } // Initialize PulseAudio if (InitPulseAudio() < 0) { cout<<"failed to initialize PulseAudio"<Start(); //_ptrThreadRec->SetPriority(rtc::kRealtimePriority); //// PLAYOUT //_ptrThreadPlay.reset(new rtc::PlatformThread( // PlayThreadFunc, this, "webrtc_audio_module_play_thread")); //_ptrThreadPlay->Start(); //_ptrThreadPlay->SetPriority(rtc::kRealtimePriority); m_initialized = true; return InitStatus::OK; } int32_t AudioDevicePulse::Terminate() { if (!m_initialized) { return 0; } //// RECORDING //if (_ptrThreadRec) { // rtc::PlatformThread* tmpThread = _ptrThreadRec.release(); // _timeEventRec.Set(); // tmpThread->Stop(); // delete tmpThread; //} //// PLAYOUT //if (_ptrThreadPlay) { // rtc::PlatformThread* tmpThread = _ptrThreadPlay.release(); // _timeEventPlay.Set(); // tmpThread->Stop(); // delete tmpThread; //} // Terminate PulseAudio if (TerminatePulseAudio() < 0) { cout << "failed to terminate PulseAudio"<(pThis)->PaServerInfoCallbackHandler(i); } void AudioDevicePulse::PaContextStateCallback(pa_context* c, void* pThis) { static_cast(pThis)->PaContextStateCallbackHandler(c); } void AudioDevicePulse::PaServerInfoCallbackHandler(const pa_server_info* i) { // Use PA native sampling rate m_sample_rate_hz = i->sample_spec.rate; // Copy the PA server version strncpy(m_paServerVersion, i->server_version, 31); m_paServerVersion[31] = '\0'; //if (_recDisplayDeviceName) { // // Copy the source name // strncpy(_recDisplayDeviceName, i->default_source_name, // kAdmMaxDeviceNameSize); // _recDisplayDeviceName[kAdmMaxDeviceNameSize - 1] = '\0'; //} //if (_playDisplayDeviceName) { // // Copy the sink name // strncpy(_playDisplayDeviceName, i->default_sink_name, // kAdmMaxDeviceNameSize); // _playDisplayDeviceName[kAdmMaxDeviceNameSize - 1] = '\0'; //} pa_threaded_mainloop_signal(m_paMainloop, 0); } void AudioDevicePulse::PaContextStateCallbackHandler(pa_context* c) { cout << "context state cb" <