diff --git a/StreamingKit/StreamingKit/STKAudioPlayer.m b/StreamingKit/StreamingKit/STKAudioPlayer.m index df0baaa..45f4dc6 100644 --- a/StreamingKit/StreamingKit/STKAudioPlayer.m +++ b/StreamingKit/StreamingKit/STKAudioPlayer.m @@ -1533,8 +1533,6 @@ static void AudioFileStreamPacketsProc(void* clientData, UInt32 numberBytes, UIn if (audioGraph != nil) { - //error = AudioOutputUnitStart(outputAudiotUnit); - error = AUGraphStart(audioGraph); if (error) @@ -1907,6 +1905,15 @@ static BOOL GetHardwareCodecClassDesc(UInt32 formatId, AudioClassDescription* cl OSStatus status; [self resetPcmBuffers]; + + Boolean isRunning; + + status = AUGraphIsRunning(audioGraph, &isRunning); + + if (isRunning) + { + return NO; + } status = AUGraphStart(audioGraph); @@ -1932,6 +1939,15 @@ static BOOL GetHardwareCodecClassDesc(UInt32 formatId, AudioClassDescription* cl return; } + Boolean isRunning; + + status = AUGraphIsRunning(audioGraph, &isRunning); + + if (!isRunning) + { + return; + } + status = AUGraphStop(audioGraph); [self resetPcmBuffers]; @@ -2369,8 +2385,6 @@ static OSStatus OutputRenderCallback(void* inRefCon, AudioUnitRenderActionFlags* { return (state & STKAudioPlayerInternalStateRunning) && state != STKAudioPlayerInternalStatePaused; }]; - - audioPlayer.internalState = STKAudioPlayerInternalStatePlaying; } if (totalFramesCopied < inNumberFrames) @@ -2383,9 +2397,10 @@ static OSStatus OutputRenderCallback(void* inRefCon, AudioUnitRenderActionFlags* { // Buffering - pthread_mutex_lock(&audioPlayer->playerMutex); - audioPlayer.internalState = STKAudioPlayerInternalStateRebuffering; - pthread_mutex_unlock(&audioPlayer->playerMutex); + [audioPlayer setInternalState:STKAudioPlayerInternalStateRebuffering ifInState:^BOOL(STKAudioPlayerInternalState state) + { + return (state & STKAudioPlayerInternalStateRunning) && state != STKAudioPlayerInternalStatePaused; + }]; } }