PortAudio  2.0
Data Structures | Typedefs | Functions
pa_ringbuffer.h File Reference

Go to the source code of this file.

Data Structures

struct  PaUtilRingBuffer

Typedefs

typedef struct PaUtilRingBuffer PaUtilRingBuffer

Functions

long PaUtil_InitializeRingBuffer (PaUtilRingBuffer *rbuf, long numBytes, void *dataPtr)
void PaUtil_FlushRingBuffer (PaUtilRingBuffer *rbuf)
long PaUtil_GetRingBufferWriteAvailable (PaUtilRingBuffer *rbuf)
long PaUtil_GetRingBufferReadAvailable (PaUtilRingBuffer *rbuf)
long PaUtil_WriteRingBuffer (PaUtilRingBuffer *rbuf, const void *data, long numBytes)
long PaUtil_ReadRingBuffer (PaUtilRingBuffer *rbuf, void *data, long numBytes)
long PaUtil_GetRingBufferWriteRegions (PaUtilRingBuffer *rbuf, long numBytes, void **dataPtr1, long *sizePtr1, void **dataPtr2, long *sizePtr2)
long PaUtil_AdvanceRingBufferWriteIndex (PaUtilRingBuffer *rbuf, long numBytes)
long PaUtil_GetRingBufferReadRegions (PaUtilRingBuffer *rbuf, long numBytes, void **dataPtr1, long *sizePtr1, void **dataPtr2, long *sizePtr2)
long PaUtil_AdvanceRingBufferReadIndex (PaUtilRingBuffer *rbuf, long numBytes)

Detailed Description


Typedef Documentation


Function Documentation

long PaUtil_AdvanceRingBufferReadIndex ( PaUtilRingBuffer rbuf,
long  numBytes 
)

Advance the read index to the next location to be read.

Parameters:
rbufThe ring buffer.
numBytesThe number of bytes to advance.
Returns:
The new position.

References PaUtilRingBuffer::bigMask, and PaUtilRingBuffer::readIndex.

Referenced by PaUtil_ReadRingBuffer().

long PaUtil_AdvanceRingBufferWriteIndex ( PaUtilRingBuffer rbuf,
long  numBytes 
)

Advance the write index to the next location to be written.

Parameters:
rbufThe ring buffer.
numBytesThe number of bytes to advance.
Returns:
The new position.

References PaUtilRingBuffer::bigMask, and PaUtilRingBuffer::writeIndex.

Referenced by PaUtil_WriteRingBuffer(), and resetBlioRingBuffers().

Clear buffer. Should only be called when buffer is NOT being read.

Parameters:
rbufThe ring buffer.

References PaUtilRingBuffer::readIndex, and PaUtilRingBuffer::writeIndex.

Referenced by PaUtil_InitializeRingBuffer(), and resetBlioRingBuffers().

Retrieve the number of bytes available in the ring buffer for reading.

Parameters:
rbufThe ring buffer.
Returns:
The number of bytes available for reading.

References PaUtilRingBuffer::bigMask, PaUtilRingBuffer::readIndex, and PaUtilRingBuffer::writeIndex.

Referenced by BlioCallback(), GetStreamReadAvailable(), PaUtil_GetRingBufferReadRegions(), PaUtil_GetRingBufferWriteAvailable(), and ReadStream().

long PaUtil_GetRingBufferReadRegions ( PaUtilRingBuffer rbuf,
long  numBytes,
void **  dataPtr1,
long *  sizePtr1,
void **  dataPtr2,
long *  sizePtr2 
)

Get address of region(s) from which we can write data.

Parameters:
rbufThe ring buffer.
numBytesThe number of bytes desired.
dataPtr1The address where the first (or only) region pointer will be stored.
sizePtr1The address where the first (or only) region length will be stored.
dataPtr2The address where the second region pointer will be stored if the first region is too small to satisfy numBytes.
sizePtr2The address where the second region length will be stored if the first region is too small to satisfy numBytes.
Returns:
The number of bytes available for reading.

References PaUtilRingBuffer::buffer, PaUtilRingBuffer::bufferSize, PaUtil_GetRingBufferReadAvailable(), PaUtilRingBuffer::readIndex, and PaUtilRingBuffer::smallMask.

Referenced by PaUtil_ReadRingBuffer().

Retrieve the number of bytes available in the ring buffer for writing.

Parameters:
rbufThe ring buffer.
Returns:
The number of bytes available for writing.

References PaUtilRingBuffer::bufferSize, and PaUtil_GetRingBufferReadAvailable().

Referenced by BlioCallback(), GetStreamWriteAvailable(), PaUtil_GetRingBufferWriteRegions(), waitUntilBlioWriteBufferIsFlushed(), and WriteStream().

long PaUtil_GetRingBufferWriteRegions ( PaUtilRingBuffer rbuf,
long  numBytes,
void **  dataPtr1,
long *  sizePtr1,
void **  dataPtr2,
long *  sizePtr2 
)

Get address of region(s) to which we can write data.

Parameters:
rbufThe ring buffer.
numBytesThe number of bytes desired.
dataPtr1The address where the first (or only) region pointer will be stored.
sizePtr1The address where the first (or only) region length will be stored.
dataPtr2The address where the second region pointer will be stored if the first region is too small to satisfy numBytes.
sizePtr2The address where the second region length will be stored if the first region is too small to satisfy numBytes.
Returns:
The room available to be written or numBytes, whichever is smaller.

References PaUtilRingBuffer::buffer, PaUtilRingBuffer::bufferSize, PaUtil_GetRingBufferWriteAvailable(), PaUtilRingBuffer::smallMask, and PaUtilRingBuffer::writeIndex.

Referenced by PaUtil_WriteRingBuffer().

long PaUtil_InitializeRingBuffer ( PaUtilRingBuffer rbuf,
long  numBytes,
void *  dataPtr 
)

Initialize Ring Buffer.

Parameters:
rbufThe ring buffer.
numBytesThe number of bytes in the buffer and must be power of 2.
dataPtrA pointer to a previously allocated area where the data will be maintained. It must be numBytes long.
Returns:
-1 if numBytes is not a power of 2, otherwise 0.

References PaUtilRingBuffer::bigMask, PaUtilRingBuffer::buffer, PaUtilRingBuffer::bufferSize, PaUtil_FlushRingBuffer(), and PaUtilRingBuffer::smallMask.

Referenced by initializeBlioRingBuffers().

long PaUtil_ReadRingBuffer ( PaUtilRingBuffer rbuf,
void *  data,
long  numBytes 
)

Read data from the ring buffer.

Parameters:
rbufThe ring buffer.
dataThe address where the data should be stored.
numBytesThe number of bytes to be read.
Returns:
The number of bytes read.

References PaUtil_AdvanceRingBufferReadIndex(), and PaUtil_GetRingBufferReadRegions().

Referenced by BlioCallback(), and ReadStream().

long PaUtil_WriteRingBuffer ( PaUtilRingBuffer rbuf,
const void *  data,
long  numBytes 
)

Write data to the ring buffer.

Parameters:
rbufThe ring buffer.
dataThe address of new data to write to the buffer.
numBytesThe number of bytes to be written.
Returns:
The number of bytes written.

References PaUtil_AdvanceRingBufferWriteIndex(), and PaUtil_GetRingBufferWriteRegions().

Referenced by BlioCallback(), and WriteStream().