Browse Source

Fixed a rounding error in iOS audio device sample rate selection

tags/2021-05-28
jules 9 years ago
parent
commit
32bb5798bf
1 changed files with 9 additions and 8 deletions
  1. +9
    -8
      modules/juce_audio_devices/native/juce_ios_Audio.cpp

+ 9
- 8
modules/juce_audio_devices/native/juce_ios_Audio.cpp View File

@@ -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();
}
//==================================================================================================


Loading…
Cancel
Save