#include "pa_mac_core_blocking.h"
#include "pa_mac_core_internal.h"
#include <assert.h>
Defines | |
#define | OSAtomicOr32(a, b) BitOrAtomic( a, (UInt32 *) b ) |
#define | OSAtomicAnd32(a, b) BitAndAtomic( a, (UInt32 *) b ) |
Functions | |
PaError | initializeBlioRingBuffers (PaMacBlio *blio, PaSampleFormat inputSampleFormat, PaSampleFormat outputSampleFormat, size_t framesPerBuffer, long ringBufferSize, int inChan, int outChan) |
PaError | resetBlioRingBuffers (PaMacBlio *blio) |
PaError | destroyBlioRingBuffers (PaMacBlio *blio) |
int | BlioCallback (const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData) |
PaError | ReadStream (PaStream *stream, void *buffer, unsigned long frames) |
PaError | WriteStream (PaStream *stream, const void *buffer, unsigned long frames) |
void | waitUntilBlioWriteBufferIsFlushed (PaMacBlio *blio) |
signed long | GetStreamReadAvailable (PaStream *stream) |
signed long | GetStreamWriteAvailable (PaStream *stream) |
This file contains the implementation required for blocking I/O. It is separated from pa_mac_core.c simply to ease development.
#define OSAtomicAnd32 | ( | a, | ||
b | ||||
) | BitAndAtomic( a, (UInt32 *) b ) |
Referenced by ReadStream(), and WriteStream().
#define OSAtomicOr32 | ( | a, | ||
b | ||||
) | BitOrAtomic( a, (UInt32 *) b ) |
Referenced by BlioCallback(), and xrunCallback().
int BlioCallback | ( | const void * | input, | |
void * | output, | |||
unsigned long | frameCount, | |||
const PaStreamCallbackTimeInfo * | timeInfo, | |||
PaStreamCallbackFlags | statusFlags, | |||
void * | userData | |||
) |
References PaMacBlio::inChan, PaMacBlio::inputRingBuffer, PaMacBlio::inputSampleSizeActual, MIN, OSAtomicOr32, PaMacBlio::outChan, PaMacBlio::outputRingBuffer, PaMacBlio::outputSampleSizeActual, paInputOverflow, paOutputUnderflow, PaUtil_GetRingBufferReadAvailable(), PaUtil_GetRingBufferWriteAvailable(), PaUtil_ReadRingBuffer(), PaUtil_WriteRingBuffer(), and PaMacBlio::statusFlags.
References PaUtilRingBuffer::buffer, PaMacBlio::inputRingBuffer, PaMacBlio::outputRingBuffer, and UNIX_ERR.
Referenced by initializeBlioRingBuffers().
static signed long GetStreamReadAvailable | ( | PaStream * | stream | ) |
References GetStreamReadAvailable(), PaMacBlio::inChan, PaMacBlio::inputRingBuffer, PaMacBlio::inputSampleSizeActual, PaUtil_GetRingBufferReadAvailable(), and VVDBUG.
Referenced by GetStreamReadAvailable(), PaMacCore_Initialize(), PaOSS_Initialize(), PaWasapi_Initialize(), PaWinDs_Initialize(), PaWinMme_Initialize(), and PaWinWdm_Initialize().
static signed long GetStreamWriteAvailable | ( | PaStream * | stream | ) |
References GetStreamWriteAvailable(), PaMacBlio::outChan, PaMacBlio::outputRingBuffer, PaMacBlio::outputSampleSizeActual, PaUtil_GetRingBufferWriteAvailable(), and VVDBUG.
Referenced by GetStreamWriteAvailable(), PaMacCore_Initialize(), PaOSS_Initialize(), PaWasapi_Initialize(), PaWinDs_Initialize(), PaWinMme_Initialize(), and PaWinWdm_Initialize().
PaError initializeBlioRingBuffers | ( | PaMacBlio * | blio, | |
PaSampleFormat | inputSampleFormat, | |||
PaSampleFormat | outputSampleFormat, | |||
size_t | framesPerBuffer, | |||
long | ringBufferSize, | |||
int | inChan, | |||
int | outChan | |||
) |
References PaUtilRingBuffer::buffer, destroyBlioRingBuffers(), PaMacBlio::errors, PaMacBlio::framesPerBuffer, PaMacBlio::inChan, PaMacBlio::inputRingBuffer, PaMacBlio::inputSampleFormat, PaMacBlio::inputSampleSizeActual, PaMacBlio::inputSampleSizePow2, PaMacBlio::outChan, PaMacBlio::outputRingBuffer, PaMacBlio::outputSampleFormat, PaMacBlio::outputSampleSizeActual, PaMacBlio::outputSampleSizePow2, PaMacCore_SetUnixError(), PaUtil_InitializeRingBuffer(), resetBlioRingBuffers(), PaMacBlio::ringBufferFrames, PaMacBlio::statusFlags, and UNIX_ERR.
References PaMacBlio::inChan, PaMacBlio::inputRingBuffer, PaMacBlio::inputSampleSizeActual, MIN, OSAtomicAnd32, PA_MAC_BLIO_BUSY_WAIT_SLEEP_INTERVAL, Pa_Sleep(), paInputOverflow, PaUtil_GetRingBufferReadAvailable(), PaUtil_ReadRingBuffer(), ReadStream(), PaMacBlio::statusFlags, UNIX_ERR, and VVDBUG.
Referenced by PaMacCore_Initialize(), PaOSS_Initialize(), PaWasapi_Initialize(), PaWinDs_Initialize(), PaWinMme_Initialize(), PaWinWdm_Initialize(), and ReadStream().
References PaUtilRingBuffer::buffer, PaUtilRingBuffer::bufferSize, PaMacBlio::inputRingBuffer, PaMacBlio::outChan, PaMacBlio::outputRingBuffer, PaMacBlio::outputSampleSizeActual, PaUtil_AdvanceRingBufferWriteIndex(), PaUtil_FlushRingBuffer(), PaMacBlio::ringBufferFrames, and PaMacBlio::statusFlags.
Referenced by initializeBlioRingBuffers().
void waitUntilBlioWriteBufferIsFlushed | ( | PaMacBlio * | blio | ) |
References MIN, OSAtomicAnd32, PaMacBlio::outChan, PaMacBlio::outputRingBuffer, PaMacBlio::outputSampleSizeActual, PA_MAC_BLIO_BUSY_WAIT_SLEEP_INTERVAL, Pa_Sleep(), paOutputUnderflow, PaUtil_GetRingBufferWriteAvailable(), PaUtil_WriteRingBuffer(), PaMacBlio::statusFlags, UNIX_ERR, VVDBUG, and WriteStream().
Referenced by PaMacCore_Initialize(), PaOSS_Initialize(), PaWasapi_Initialize(), PaWinDs_Initialize(), PaWinMme_Initialize(), PaWinWdm_Initialize(), and WriteStream().