char message[20];
int minFramesPerBuffer;
int maxFramesPerBuffer;
+ int callbackCount;
+ PaTime minDeltaDacTime;
+ PaTime maxDeltaDacTime;
+ PaStreamCallbackTimeInfo previousTimeInfo;
}
paTestData;
{
data->minFramesPerBuffer = framesPerBuffer;
}
-
if( data->maxFramesPerBuffer < framesPerBuffer )
{
data->maxFramesPerBuffer = framesPerBuffer;
}
+ // Measure min and max output time stamp delta.
+ if( data->callbackCount > 0 )
+ {
+ PaTime delta = timeInfo->outputBufferDacTime - data->previousTimeInfo.outputBufferDacTime;
+ if( data->minDeltaDacTime > delta )
+ {
+ data->minDeltaDacTime = delta;
+ }
+ if( data->maxDeltaDacTime < delta )
+ {
+ data->maxDeltaDacTime = delta;
+ }
+ }
+ data->previousTimeInfo = *timeInfo;
+
for( i=0; i<framesPerBuffer; i++ )
{
*out++ = data->sine[data->left_phase]; /* left */
if( data->right_phase >= TABLE_SIZE ) data->right_phase -= TABLE_SIZE;
}
+ data->callbackCount += 1;
return paContinue;
}
dataPtr->minFramesPerBuffer = 9999999;
dataPtr->maxFramesPerBuffer = 0;
+ dataPtr->minDeltaDacTime = 9999999.0;
+ dataPtr->maxDeltaDacTime = 0.0;
+ dataPtr->callbackCount = 0;
+
printf("-------------------------------------\n");
printf("Stream parameter: suggestedOutputLatency = %g\n", outputParamsPtr->suggestedLatency );
if( framesPerBuffer == paFramesPerBufferUnspecified ){
printf("Stream parameter: user framesPerBuffer = paFramesPerBufferUnspecified\n" );
}else{
- printf("Stream parameter: user framesPerBuffer = %d\n", framesPerBuffer );
+ printf("Stream parameter: user framesPerBuffer = %lu\n", framesPerBuffer );
}
err = Pa_OpenStream(
&stream,
printf("Play for %d seconds.\n", NUM_SECONDS );
Pa_Sleep( NUM_SECONDS * 1000 );
-
+
printf(" minFramesPerBuffer = %4d\n", dataPtr->minFramesPerBuffer );
printf(" maxFramesPerBuffer = %4d\n", dataPtr->maxFramesPerBuffer );
+ printf(" minDeltaDacTime = %f\n", dataPtr->minDeltaDacTime );
+ printf(" maxDeltaDacTime = %f\n", dataPtr->maxDeltaDacTime );
err = Pa_StopStream( stream );
if( err != paNoError ) goto error2;