bool CCoreAudioGraph::Stop() { if (!m_audioGraph) return false; OSStatus ret; Boolean isRunning = false; ret = AUGraphIsRunning(m_audioGraph, &isRunning); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Stop: Audio graph not running. Error = %s", GetError(ret).c_str()); return false; } if (isRunning) { if (m_inputUnit) m_inputUnit->Stop(); if (m_mixerUnit) m_mixerUnit->Stop(); if (m_audioUnit) m_audioUnit->Stop(); ret = AUGraphStop(m_audioGraph); if (ret) { CLog::Log(LOGERROR, "CCoreAudioGraph::Stop: Error stopping audio graph. Error = %s", GetError(ret).c_str()); } } return true; }
Boolean CAPlayThrough::IsRunning() { OSStatus err = noErr; UInt32 auhalRunning = 0, size = 0; Boolean graphRunning; size = sizeof(auhalRunning); if(mInputUnit) { err = AudioUnitGetProperty(mInputUnit, kAudioOutputUnitProperty_IsRunning, kAudioUnitScope_Global, 0, // input element &auhalRunning, &size); } if(mGraph) err = AUGraphIsRunning(mGraph,&graphRunning); return (auhalRunning || graphRunning); }
int QBSoundMac::play(const char *note,int track,bool loop) { if (note == NULL) return 0; startAUGraph(); OSStatus err; int r=0; Boolean run; if (mGraph) { err = AUGraphIsRunning(mGraph,&run); if (err == noErr) { if (run) { #if 1 QBSoundLocker locker(&mMutex,"play"); r = QBSound::play(note,track,loop); #else pthread_mutex_lock(&mMutex); r = QBSound::play(note,track,loop); pthread_mutex_unlock(&mMutex); #endif } } } return r; }
JNIEXPORT jint JNICALL Java_com_apple_audio_toolbox_AUGraph_AUGraphIsRunning (JNIEnv *, jclass, jint inGraph, jint outIsRunning) { return (jint)AUGraphIsRunning((AUGraph)inGraph, (Boolean *)outIsRunning); }