PortAudio
2.0
|
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "pa_ringbuffer.h"
#include <string.h>
#include "pa_memorybarrier.h"
ring_buffer_size_t PaUtil_AdvanceRingBufferReadIndex | ( | PaUtilRingBuffer * | rbuf, |
ring_buffer_size_t | elementCount | ||
) |
Advance the read index to the next location to be read.
rbuf | The ring buffer. |
elementCount | The number of elements to advance. |
References PaUtilRingBuffer::bigMask, and PaUtilRingBuffer::readIndex.
Referenced by PaUtil_ReadRingBuffer().
ring_buffer_size_t PaUtil_AdvanceRingBufferWriteIndex | ( | PaUtilRingBuffer * | rbuf, |
ring_buffer_size_t | elementCount | ||
) |
Advance the write index to the next location to be written.
rbuf | The ring buffer. |
elementCount | The number of elements to advance. |
References PaUtilRingBuffer::bigMask, and PaUtilRingBuffer::writeIndex.
Referenced by PaUtil_WriteRingBuffer(), and resetBlioRingBuffers().
void PaUtil_FlushRingBuffer | ( | PaUtilRingBuffer * | rbuf | ) |
Reset buffer to empty. Should only be called when buffer is NOT being read or written.
rbuf | The ring buffer. |
References PaUtilRingBuffer::readIndex, and PaUtilRingBuffer::writeIndex.
Referenced by PaUtil_InitializeRingBuffer(), and resetBlioRingBuffers().
ring_buffer_size_t PaUtil_GetRingBufferReadAvailable | ( | const PaUtilRingBuffer * | rbuf | ) |
Retrieve the number of elements available in the ring buffer for reading.
rbuf | The ring buffer. |
References PaUtilRingBuffer::bigMask, PaUtilRingBuffer::readIndex, and PaUtilRingBuffer::writeIndex.
Referenced by BlioCallback(), GetStreamReadAvailable(), PaPulseAudio_GetStreamReadAvailableBlock(), PaUtil_GetRingBufferReadRegions(), PaUtil_GetRingBufferWriteAvailable(), ReadStream(), and waitUntilBlioWriteBufferIsEmpty().
ring_buffer_size_t PaUtil_GetRingBufferReadRegions | ( | PaUtilRingBuffer * | rbuf, |
ring_buffer_size_t | elementCount, | ||
void ** | dataPtr1, | ||
ring_buffer_size_t * | sizePtr1, | ||
void ** | dataPtr2, | ||
ring_buffer_size_t * | sizePtr2 | ||
) |
Get address of region(s) from which we can read data.
rbuf | The ring buffer. |
elementCount | The number of elements desired. |
dataPtr1 | The address where the first (or only) region pointer will be stored. |
sizePtr1 | The address where the first (or only) region length will be stored. |
dataPtr2 | The address where the second region pointer will be stored if the first region is too small to satisfy elementCount. |
sizePtr2 | The address where the second region length will be stored if the first region is too small to satisfy elementCount. |
References PaUtilRingBuffer::buffer, PaUtilRingBuffer::bufferSize, PaUtilRingBuffer::elementSizeBytes, PaUtil_GetRingBufferReadAvailable(), PaUtilRingBuffer::readIndex, and PaUtilRingBuffer::smallMask.
Referenced by PaUtil_ReadRingBuffer().
ring_buffer_size_t PaUtil_GetRingBufferWriteAvailable | ( | const PaUtilRingBuffer * | rbuf | ) |
Retrieve the number of elements available in the ring buffer for writing.
rbuf | The ring buffer. |
References PaUtilRingBuffer::bufferSize, and PaUtil_GetRingBufferReadAvailable().
Referenced by _PaPulseAudio_WriteRingBuffer(), BlioCallback(), GetStreamWriteAvailable(), PaUtil_GetRingBufferWriteRegions(), ProcessingThread(), and WriteStream().
ring_buffer_size_t PaUtil_GetRingBufferWriteRegions | ( | PaUtilRingBuffer * | rbuf, |
ring_buffer_size_t | elementCount, | ||
void ** | dataPtr1, | ||
ring_buffer_size_t * | sizePtr1, | ||
void ** | dataPtr2, | ||
ring_buffer_size_t * | sizePtr2 | ||
) |
Get address of region(s) to which we can write data.
rbuf | The ring buffer. |
elementCount | The number of elements desired. |
dataPtr1 | The address where the first (or only) region pointer will be stored. |
sizePtr1 | The address where the first (or only) region length will be stored. |
dataPtr2 | The address where the second region pointer will be stored if the first region is too small to satisfy elementCount. |
sizePtr2 | The address where the second region length will be stored if the first region is too small to satisfy elementCount. |
References PaUtilRingBuffer::buffer, PaUtilRingBuffer::bufferSize, PaUtilRingBuffer::elementSizeBytes, PaUtil_GetRingBufferWriteAvailable(), PaUtilRingBuffer::smallMask, and PaUtilRingBuffer::writeIndex.
Referenced by PaUtil_WriteRingBuffer().
ring_buffer_size_t PaUtil_InitializeRingBuffer | ( | PaUtilRingBuffer * | rbuf, |
ring_buffer_size_t | elementSizeBytes, | ||
ring_buffer_size_t | elementCount, | ||
void * | dataPtr | ||
) |
Initialize Ring Buffer to empty state ready to have elements written to it.
rbuf | The ring buffer. |
elementSizeBytes | The size of a single data element in bytes. |
elementCount | The number of elements in the buffer (must be a power of 2). |
dataPtr | A pointer to a previously allocated area where the data will be maintained. It must be elementCount*elementSizeBytes long. |
References PaUtilRingBuffer::bigMask, PaUtilRingBuffer::buffer, PaUtilRingBuffer::bufferSize, PaUtilRingBuffer::elementSizeBytes, PaUtil_FlushRingBuffer(), and PaUtilRingBuffer::smallMask.
Referenced by initializeBlioRingBuffers(), and PaPulseAudio_BlockingInitRingBuffer().
ring_buffer_size_t PaUtil_ReadRingBuffer | ( | PaUtilRingBuffer * | rbuf, |
void * | data, | ||
ring_buffer_size_t | elementCount | ||
) |
Read data from the ring buffer.
rbuf | The ring buffer. |
data | The address where the data should be stored. |
elementCount | The number of elements to be read. |
References PaUtilRingBuffer::elementSizeBytes, PaUtil_AdvanceRingBufferReadIndex(), and PaUtil_GetRingBufferReadRegions().
Referenced by _PaPulseAudio_WriteRingBuffer(), BlioCallback(), PaPulseAudio_ReadStreamBlock(), and ReadStream().
ring_buffer_size_t PaUtil_WriteRingBuffer | ( | PaUtilRingBuffer * | rbuf, |
const void * | data, | ||
ring_buffer_size_t | elementCount | ||
) |
Write data to the ring buffer.
rbuf | The ring buffer. |
data | The address of new data to write to the buffer. |
elementCount | The number of elements to be written. |
References PaUtilRingBuffer::elementSizeBytes, PaUtil_AdvanceRingBufferWriteIndex(), and PaUtil_GetRingBufferWriteRegions().
Referenced by _PaPulseAudio_WriteRingBuffer(), BlioCallback(), and WriteStream().