PulseAudioSource(int port, int mic): mPort(port) , mMic(mic) , mBuffering(50) , mPaused(true) , mQuit(false) , mPMainLoop(nullptr) , mPContext(nullptr) , mStream(nullptr) , mServer(nullptr) , mPAready(0) , mResampleRatio(1.0) , mTimeAdjust(1.0) , mOutputSamplesPerSec(48000) , mResampler(nullptr) , mOutSamples(0) { CONFIGVARIANT var(mic ? N_AUDIO_DEVICE1 : N_AUDIO_DEVICE0, CONFIG_TYPE_CHAR); if(LoadSetting(mPort, APINAME, var) && !var.strValue.empty()) { mDevice = var.strValue; //TODO open device etc. } else throw AudioSourceError(APINAME ": failed to load device settings"); { CONFIGVARIANT var(N_BUFFER_LEN, CONFIG_TYPE_INT); if(LoadSetting(mPort, APINAME, var)) mBuffering = var.intValue; } if (!AudioInit()) throw AudioSourceError(APINAME ": failed to bind pulseaudio library"); mSSpec.format = PA_SAMPLE_FLOAT32LE; //PA_SAMPLE_S16LE; mSSpec.channels = 2; mSSpec.rate = 48000; if (!Init()) throw AudioSourceError(APINAME ": failed to init"); }
bool CLuaGameObjectHandle::AddSound(const std::string &Key, const std::string &SoundEventName) { CAudioSource* l_AudioSource = m_GameObject->GetAudioSource(); if (l_AudioSource) { return l_AudioSource->AddSound(Key,SoundEventName); } else { AudioSourceError(); return false; } }
void CLuaGameObjectHandle::PlayEvent(const std::string &Key, const C3DElement* Speaker) { CAudioSource* l_AudioSource = m_GameObject->GetAudioSource(); if (l_AudioSource) { l_AudioSource->PlayEvent(Key, Speaker); } else { AudioSourceError(); } }
void CLuaGameObjectHandle::EnableAudioSource(bool Value) { CAudioSource* l_AudioSource = m_GameObject->GetAudioSource(); if (l_AudioSource) { if (Value) l_AudioSource->Enable(); else l_AudioSource->Disable(); } else { AudioSourceError(); } }