From 32bb5798bf962de529ff11ad65e6cc1c6c70f930 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 16 Feb 2016 15:36:05 +0000 Subject: [PATCH] Fixed a rounding error in iOS audio device sample rate selection --- .../native/juce_ios_Audio.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/juce_audio_devices/native/juce_ios_Audio.cpp b/modules/juce_audio_devices/native/juce_ios_Audio.cpp index 11cf9a59e0..a351ba7f66 100644 --- a/modules/juce_audio_devices/native/juce_ios_Audio.cpp +++ b/modules/juce_audio_devices/native/juce_ios_Audio.cpp @@ -467,7 +467,7 @@ public: AudioOutputUnitStart (audioUnit); } - if (callback) + if (callback != nullptr) callback->audioDeviceAboutToStart (this); } } @@ -596,18 +596,19 @@ private: auto session = [AVAudioSession sharedInstance]; sampleRate = session.sampleRate; audioInputIsAvailable = session.isInputAvailable; - JUCE_IOS_AUDIO_LOG ("AVAudioSession: sampleRate: " << sampleRate << "Hz, audioInputAvailable: " << (int) audioInputIsAvailable); + actualBufferSize = roundToInt (sampleRate * session.IOBufferDuration); + + JUCE_IOS_AUDIO_LOG ("AVAudioSession: sampleRate: " << sampleRate + << "Hz, audioInputAvailable: " << (int) audioInputIsAvailable); } void updateCurrentBufferSize() { - auto session = [AVAudioSession sharedInstance]; - NSTimeInterval bufferDuration = sampleRate > 0 ? (NSTimeInterval) (preferredBufferSize / sampleRate) : 0.0; - JUCE_NSERROR_CHECK ([session setPreferredIOBufferDuration: bufferDuration - error: &error]); + NSTimeInterval bufferDuration = sampleRate > 0 ? (NSTimeInterval) ((preferredBufferSize + 1) / sampleRate) : 0.0; - bufferDuration = session.IOBufferDuration; - actualBufferSize = roundToInt (sampleRate * bufferDuration); + JUCE_NSERROR_CHECK ([[AVAudioSession sharedInstance] setPreferredIOBufferDuration: bufferDuration + error: &error]); + updateSampleRateAndAudioInput(); } //==================================================================================================