pa_mac_core_blocking.c File Reference

#include "pa_mac_core_blocking.h"
#include "pa_mac_core_internal.h"
#include <assert.h>
#include <libkern/OSAtomic.h>

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)

Function Documentation

int BlioCallback ( const void *  input,
void *  output,
unsigned long  frameCount,
const PaStreamCallbackTimeInfo timeInfo,
PaStreamCallbackFlags  statusFlags,
void *  userData 
)

PaError destroyBlioRingBuffers ( PaMacBlio blio  ) 

static signed long GetStreamReadAvailable ( PaStream stream  ) 

Number of frames that can be read from input stream without blocking.

Parameters:
s Pointer to PortAudio stream
Returns:
Number of frames, or PortAudio error code

static signed long GetStreamWriteAvailable ( PaStream stream  ) 

Number of frames that can be written to output stream without blocking.

Parameters:
s Pointer to PortAudio stream
Returns:
Number of frames, or PortAudio error code

PaError initializeBlioRingBuffers ( PaMacBlio blio,
PaSampleFormat  inputSampleFormat,
PaSampleFormat  outputSampleFormat,
size_t  framesPerBuffer,
long  ringBufferSize,
int  inChan,
int  outChan 
)

static PaError ReadStream ( PaStream stream,
void *  buffer,
unsigned long  frames 
)

Read data from input stream. This reads the indicated number of frames into the supplied buffer from an input stream, and blocks until this is done.

Parameters:
s Pointer to PortAudio stream
buffer Pointer to buffer that will receive interleaved data (or an array of pointers to a buffer for each non-interleaved channel)
frames Number of frames to read from stream
Returns:
PortAudio error code (also indicates overflow via paInputOverflowed)

Todo:
REVIEW: consider what to do if the input overflows. do we requeue all of the buffers? should we be running a thread to make sure they are always queued?

PaError resetBlioRingBuffers ( PaMacBlio blio  ) 

void waitUntilBlioWriteBufferIsFlushed ( PaMacBlio blio  ) 

static PaError WriteStream ( PaStream stream,
const void *  buffer,
unsigned long  frames 
)

Write data to output stream. This writes the indicated number of frames from the supplied buffer to an output stream, and blocks until this is done.

Parameters:
s Pointer to PortAudio stream
buffer Pointer to buffer that provides interleaved data (or an array of pointers to a buffer for each non-interleaved channel)
frames Number of frames to write to stream
Returns:
PortAudio error code (also indicates underflow via paOutputUnderflowed)

Todo:
REVIEW: consider what to do if the output underflows. do we requeue all the existing buffers with zeros? should we run a separate thread to keep the buffers enqueued at all times?


Generated on Fri Nov 17 07:08:01 2006 for PortAudio by  doxygen 1.5.1