diff --git a/Audio/Output/OutputCoreAudio.m b/Audio/Output/OutputCoreAudio.m index 3b2a0f19e..04e2806d0 100644 --- a/Audio/Output/OutputCoreAudio.m +++ b/Audio/Output/OutputCoreAudio.m @@ -679,12 +679,16 @@ current_device_listener(AudioObjectID inObjectID, UInt32 inNumberAddresses, cons _au.outputProvider = ^AUAudioUnitStatus(AudioUnitRenderActionFlags *_Nonnull actionFlags, const AudioTimeStamp *_Nonnull timestamp, AUAudioFrameCount frameCount, NSInteger inputBusNumber, AudioBufferList *_Nonnull inputData) { // This expects multiple buffers, so: + if(!frameCount) return 0; + int i; const int channels = format->mChannelsPerFrame; + if(!channels) return 0; + const int channelsminusone = channels - 1; - float buffers[frameCount * format->mChannelsPerFrame]; + float buffers[frameCount * channels]; uint8_t bufferlistbuffer[sizeof(AudioBufferList) + sizeof(AudioBuffer) * channelsminusone]; - AudioBufferList *ioData = (AudioBufferList *)(bufferlistbuffer); + AudioBufferList *ioData = (AudioBufferList *)(&bufferlistbuffer[0]); ioData->mNumberBuffers = channels;