PaUtilHostApiRepresentation Struct Reference

#include <pa_hostapi.h>

Data Fields

PaUtilPrivatePaFrontHostApiInfo privatePaFrontInfo
PaHostApiInfo info
PaDeviceInfo ** deviceInfos
void(* Terminate )(struct PaUtilHostApiRepresentation *hostApi)
PaError(* OpenStream )(struct PaUtilHostApiRepresentation *hostApi, PaStream **stream, const PaStreamParameters *inputParameters, const PaStreamParameters *outputParameters, double sampleRate, unsigned long framesPerCallback, PaStreamFlags streamFlags, PaStreamCallback *streamCallback, void *userData)
PaError(* IsFormatSupported )(struct PaUtilHostApiRepresentation *hostApi, const PaStreamParameters *inputParameters, const PaStreamParameters *outputParameters, double sampleRate)

Detailed Description

A structure representing the interface to a host API. Contains both concrete data and pointers to functions which implement the interface.


Field Documentation

The host api implementation should populate the info field. In the case of info.defaultInputDevice and info.defaultOutputDevice the values stored should be 0 based indices within the host api's own device index range (0 to deviceCount). These values will be converted to global device indices by pa_front after PaUtilHostApiInitializer() returns.

Referenced by PaAsio_Initialize(), PaJack_Initialize(), PaMacCore_Initialize(), PaOSS_Initialize(), PaSkeleton_Initialize(), PaUtil_DeviceIndexToHostApiDeviceIndex(), PaWinDs_Initialize(), PaWinMme_Initialize(), and PaWinWdm_Initialize().

PaError(* PaUtilHostApiRepresentation::IsFormatSupported)(struct PaUtilHostApiRepresentation *hostApi, const PaStreamParameters *inputParameters, const PaStreamParameters *outputParameters, double sampleRate)
PaError(* PaUtilHostApiRepresentation::OpenStream)(struct PaUtilHostApiRepresentation *hostApi, PaStream **stream, const PaStreamParameters *inputParameters, const PaStreamParameters *outputParameters, double sampleRate, unsigned long framesPerCallback, PaStreamFlags streamFlags, PaStreamCallback *streamCallback, void *userData)

The inputParameters and outputParameters pointers should not be saved as they will not remain valid after OpenStream is called.

The following guarantees are made about parameters to (*OpenStream)():

[NOTE: the following list up to *END PA FRONT VALIDATIONS* should be kept in sync with the one for ValidateOpenStreamParameters and Pa_OpenStream in pa_front.c]

PaHostApiRepresentation *hostApi

  • is valid for this implementation

PaStream** stream

  • is non-null
  • at least one of inputParameters & outputParmeters is valid (not NULL)
  • if inputParameters & outputParmeters are both valid, that inputParameters->device & outputParmeters->device both use the same host api

PaDeviceIndex inputParameters->device

  • is within range (0 to Pa_CountDevices-1) Or:
  • is paUseHostApiSpecificDeviceSpecification and inputParameters->hostApiSpecificStreamInfo is non-NULL and refers to a valid host api

int inputParameters->numChannels

  • if inputParameters->device is not paUseHostApiSpecificDeviceSpecification, numInputChannels is > 0
  • upper bound is NOT validated against device capabilities

PaSampleFormat inputParameters->sampleFormat

void *inputParameters->hostApiSpecificStreamInfo

  • if supplied its hostApi field matches the input device's host Api

PaDeviceIndex outputParmeters->device

  • is within range (0 to Pa_CountDevices-1)

int outputParmeters->numChannels

  • if inputDevice is valid, numInputChannels is > 0
  • upper bound is NOT validated against device capabilities

PaSampleFormat outputParmeters->sampleFormat

void *outputParmeters->hostApiSpecificStreamInfo

  • if supplied its hostApi field matches the output device's host Api

double sampleRate

  • is not an 'absurd' rate (less than 1000. or greater than 200000.)
  • sampleRate is NOT validated against device capabilities

PaStreamFlags streamFlags

  • unused platform neutral flags are zero
  • paNeverDropInput is only used for full-duplex callback streams with variable buffer size (paFramesPerBufferUnspecified)

[*END PA FRONT VALIDATIONS*]

The following validations MUST be performed by (*OpenStream)():

  • check that input device can support numInputChannels
  • check that input device can support inputSampleFormat, or that we have the capability to convert from outputSampleFormat to a native format
  • if inputStreamInfo is supplied, validate its contents, or return an error if no inputStreamInfo is expected
  • check that output device can support numOutputChannels
  • check that output device can support outputSampleFormat, or that we have the capability to convert from outputSampleFormat to a native format
  • if outputStreamInfo is supplied, validate its contents, or return an error if no outputStreamInfo is expected
  • if a full duplex stream is requested, check that the combination of input and output parameters is supported
  • check that the device supports sampleRate
  • alter sampleRate to a close allowable rate if necessary
  • validate inputLatency and outputLatency
  • validate any platform specific flags, if flags are supplied they must be valid.

Referenced by Pa_OpenStream(), and PaMacCore_Initialize().

(*Terminate)() is guaranteed to be called with a valid <hostApi> parameter, which was previously returned from the same implementation's initializer.

Referenced by PaMacCore_Initialize().


The documentation for this struct was generated from the following file:

Generated for PortAudio by  doxygen1.6.1