ASIOBufferInfo *asioBufferInfos;
ASIOChannelInfo *asioChannelInfos;
- long inputLatency, outputLatency; // actual latencies returned by asio
+ long asioInputLatencyFrames, asioOutputLatencyFrames; // actual latencies returned by asio
long inputChannelCount, outputChannelCount;
bool postOutput;
}
- ASIOGetLatencies( &stream->inputLatency, &stream->outputLatency );
+ ASIOGetLatencies( &stream->asioInputLatencyFrames, &stream->asioOutputLatencyFrames );
/* Using blocking i/o interface... */
to samples frames.
5) Get the next larger (or equal) power-of-two buffer size.
*/
- lBlockingBufferSize = suggestedInputLatencyFrames - stream->inputLatency;
+ lBlockingBufferSize = suggestedInputLatencyFrames - stream->asioInputLatencyFrames;
lBlockingBufferSize = (lBlockingBufferSize > 0) ? lBlockingBufferSize : 1;
lBlockingBufferSize = (lBlockingBufferSize + framesPerBuffer - 1) / framesPerBuffer;
lBlockingBufferSize = (lBlockingBufferSize + 1) * framesPerBuffer;
(double)( PaUtil_GetBufferProcessorInputLatency(&stream->bufferProcessor )
+ PaUtil_GetBufferProcessorInputLatency(&stream->blockingState->bufferProcessor)
+ (lBlockingBufferSize / framesPerBuffer - 1) * framesPerBuffer
- + stream->inputLatency )
+ + stream->asioInputLatencyFrames )
/ sampleRate;
/* The code below prints the ASIO latency which doesn't include
to samples frames.
5) Get the next larger (or equal) power-of-two buffer size.
*/
- lBlockingBufferSize = suggestedOutputLatencyFrames - stream->outputLatency;
+ lBlockingBufferSize = suggestedOutputLatencyFrames - stream->asioOutputLatencyFrames;
lBlockingBufferSize = (lBlockingBufferSize > 0) ? lBlockingBufferSize : 1;
lBlockingBufferSize = (lBlockingBufferSize + framesPerBuffer - 1) / framesPerBuffer;
lBlockingBufferSize = (lBlockingBufferSize + 1) * framesPerBuffer;
(double)( PaUtil_GetBufferProcessorOutputLatency(&stream->bufferProcessor )
+ PaUtil_GetBufferProcessorOutputLatency(&stream->blockingState->bufferProcessor)
+ (lBlockingBufferSize / framesPerBuffer - 1) * framesPerBuffer
- + stream->outputLatency )
+ + stream->asioOutputLatencyFrames )
/ sampleRate;
/* The code below prints the ASIO latency which doesn't include
stream->streamRepresentation.streamInfo.inputLatency =
(double)( PaUtil_GetBufferProcessorInputLatency(&stream->bufferProcessor)
- + stream->inputLatency) / sampleRate; // seconds
+ + stream->asioInputLatencyFrames) / sampleRate; // seconds
stream->streamRepresentation.streamInfo.outputLatency =
(double)( PaUtil_GetBufferProcessorOutputLatency(&stream->bufferProcessor)
- + stream->outputLatency) / sampleRate; // seconds
+ + stream->asioOutputLatencyFrames) / sampleRate; // seconds
stream->streamRepresentation.streamInfo.sampleRate = sampleRate;
// the code below prints the ASIO latency which doesn't include the
/* patch from Paul Boege */
paTimeInfo.inputBufferAdcTime = paTimeInfo.currentTime -
- ((double)theAsioStream->inputLatency/theAsioStream->streamRepresentation.streamInfo.sampleRate);
+ ((double)theAsioStream->asioInputLatencyFrames/theAsioStream->streamRepresentation.streamInfo.sampleRate);
paTimeInfo.outputBufferDacTime = paTimeInfo.currentTime +
- ((double)theAsioStream->outputLatency/theAsioStream->streamRepresentation.streamInfo.sampleRate);
+ ((double)theAsioStream->asioOutputLatencyFrames/theAsioStream->streamRepresentation.streamInfo.sampleRate);
/* old version is buggy because the buffer processor also adds in its latency to the time parameters
paTimeInfo.inputBufferAdcTime = paTimeInfo.currentTime - theAsioStream->streamRepresentation.streamInfo.inputLatency;