{\r
paTestData *data = (paTestData*)userData;\r
ring_buffer_size_t elementsToPlay = PaUtil_GetRingBufferReadAvailable(&data->ringBuffer);\r
- ring_buffer_size_t elementsToRead = min(elementsToPlay, (ring_buffer_size_t)framesPerBuffer);\r
+ ring_buffer_size_t elementsToRead = min(elementsToPlay, (ring_buffer_size_t)(framesPerBuffer * NUM_CHANNELS));\r
SAMPLE* wptr = (SAMPLE*)outputBuffer;\r
\r
(void) inputBuffer; /* Prevent unused variable warnings. */\r
if ((ring_buffer_size_t)framesPerBuffer > elementsToRead)\r
{\r
int i;\r
- const int samplesToClear = (framesPerBuffer - elementsToRead) * NUM_CHANNELS;\r
+ const int samplesToClear = framesPerBuffer * NUM_CHANNELS - elementsToRead;\r
for (i = 0; i < samplesToClear; ++i)\r
{\r
*wptr++ = 0;\r
}\r
}\r
\r
- data->frameIndex += PaUtil_ReadRingBuffer(&data->ringBuffer, wptr, elementsToRead * NUM_CHANNELS);\r
+ data->frameIndex += PaUtil_ReadRingBuffer(&data->ringBuffer, wptr, elementsToRead);\r
\r
return data->threadSyncFlag ? paComplete : paContinue;\r
}\r