Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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);	
}
Exemplo n.º 3
0
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);
}