From: rossb Date: Wed, 11 Jan 2012 13:22:50 +0000 (+0000) Subject: fixed bug in coreaudio host api: suggested latency of zero with fixed user buffer... X-Git-Tag: pa_stable_v19_20140130_r1919~92 X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=0a05ae27fef23744470decea53aa6de27ad9d17e;p=portaudio fixed bug in coreaudio host api: suggested latency of zero with fixed user buffer size resulted in min supported buffer size instead of requested user buffer size --- diff --git a/src/hostapi/coreaudio/pa_mac_core.c b/src/hostapi/coreaudio/pa_mac_core.c index 7b0d424..339e2af 100644 --- a/src/hostapi/coreaudio/pa_mac_core.c +++ b/src/hostapi/coreaudio/pa_mac_core.c @@ -1628,12 +1628,19 @@ static UInt32 CalculateOptimalBufferSize( PaMacAUHAL *auhalHostApi, resultBufferSizeFrames = MAX( resultBufferSizeFrames, (UInt32) variableLatencyFrames ); } + // can't have zero frames. code to round up to next user buffer requires non-zero + resultBufferSizeFrames = MAX( resultBufferSizeFrames, 1 ); + if( requestedFramesPerBuffer != paFramesPerBufferUnspecified ) { // make host buffer the next highest integer multiple of user frames per buffer UInt32 n = (resultBufferSizeFrames + requestedFramesPerBuffer - 1) / requestedFramesPerBuffer; resultBufferSizeFrames = n * requestedFramesPerBuffer; + + // FIXME: really we should be searching for a multiple of requestedFramesPerBuffer + // that is >= suggested latency and also fits within device buffer min/max + }else{ VDBUG( ("Block Size unspecified. Based on Latency, the user wants a Block Size near: %ld.\n", resultBufferSizeFrames ) );