pa_asio.cpp File Reference

#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <new>
#include <windows.h>
#include <mmsystem.h>
#include "portaudio.h"
#include "pa_asio.h"
#include "pa_util.h"
#include "pa_allocation.h"
#include "pa_hostapi.h"
#include "pa_stream.h"
#include "pa_cpuload.h"
#include "pa_process.h"
#include "pa_debugprint.h"
#include "pa_ringbuffer.h"
#include "asiosys.h"
#include "asio.h"
#include "asiodrivers.h"
#include "iasiothiscallresolver.h"

Data Structures

struct  PaAsioDriverInfo
struct  PaAsioHostApiRepresentation
struct  PaAsioDeviceInfo
struct  PaAsioStreamBlockingState
struct  PaAsioStream

Defines

#define CARBON_COMPATIBLE   (0)
#define PA_ASIO_SET_LAST_HOST_ERROR(errorCode, errorText)   PaUtil_SetLastHostErrorInfo( paASIO, errorCode, errorText )
#define PA_ASIO_SET_LAST_SYSTEM_ERROR(errorCode)   PaAsio_SetLastSystemError( errorCode )
#define PA_ASIO_SET_LAST_ASIO_ERROR(asioError)   PaUtil_SetLastHostErrorInfo( paASIO, asioError, PaAsio_GetAsioErrorText( asioError ) )
#define PA_SWAP32_(x)   ((x>>24) | ((x>>8)&0xFF00) | ((x<<8)&0xFF0000) | (x<<24));
#define PA_SWAP_(x, y)   temp=x; x = y; y = temp;
#define PA_DEFAULTSAMPLERATESEARCHORDER_COUNT_   13
#define ASIO64toDouble(a)   ((a).lo + (a).hi * twoRaisedTo32)

Typedefs

typedef struct PaAsioDriverInfo PaAsioDriverInfo
typedef void PaAsioBufferConverter (void *, long, long)
typedef struct PaAsioDeviceInfo PaAsioDeviceInfo
typedef BOOL(WINAPI * IsDebuggerPresentPtr )(VOID)
typedef struct
PaAsioStreamBlockingState 
PaAsioStreamBlockingState
typedef struct PaAsioStream PaAsioStream

Functions

PaError PaAsio_Initialize (PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex)
void AsioSampleTypeLOG (ASIOSampleType type)
PaError PaAsio_GetAvailableLatencyValues (PaDeviceIndex device, long *minLatency, long *maxLatency, long *preferredLatency, long *granularity)
PaError PaAsio_ShowControlPanel (PaDeviceIndex device, void *systemSpecific)
PaError PaAsio_GetInputChannelName (PaDeviceIndex device, int channelIndex, const char **channelName)
PaError PaAsio_GetOutputChannelName (PaDeviceIndex device, int channelIndex, const char **channelName)
PaError PaAsio_SetStreamSampleRate (PaStream *s, double sampleRate)

Variables

AsioDrivers * asioDrivers
IsDebuggerPresentPtr IsDebuggerPresent_ = 0
const double twoRaisedTo32 = 4294967296.

Detailed Description

Note that specific support for paInputUnderflow, paOutputOverflow and paNeverDropInput is not necessary or possible with this driver due to the synchronous full duplex double-buffered architecture of ASIO.


Define Documentation

#define ASIO64toDouble (  )     ((a).lo + (a).hi * twoRaisedTo32)
#define CARBON_COMPATIBLE   (0)
#define PA_ASIO_SET_LAST_ASIO_ERROR ( asioError   )     PaUtil_SetLastHostErrorInfo( paASIO, asioError, PaAsio_GetAsioErrorText( asioError ) )
#define PA_ASIO_SET_LAST_HOST_ERROR ( errorCode,
errorText   )     PaUtil_SetLastHostErrorInfo( paASIO, errorCode, errorText )
#define PA_ASIO_SET_LAST_SYSTEM_ERROR ( errorCode   )     PaAsio_SetLastSystemError( errorCode )
#define PA_DEFAULTSAMPLERATESEARCHORDER_COUNT_   13

Referenced by PaAsio_Initialize().

#define PA_SWAP32_ (  )     ((x>>24) | ((x>>8)&0xFF00) | ((x<<8)&0xFF0000) | (x<<24));
#define PA_SWAP_ ( x,
 )     temp=x; x = y; y = temp;

Typedef Documentation

typedef BOOL(WINAPI * IsDebuggerPresentPtr)(VOID)
typedef void PaAsioBufferConverter(void *, long, long)
typedef struct PaAsioStream PaAsioStream

A data structure specifically for storing blocking i/o related data.


Function Documentation

void AsioSampleTypeLOG ( ASIOSampleType  type  ) 

References PA_DEBUG.

PaError PaAsio_GetAvailableLatencyValues ( PaDeviceIndex  device,
long *  minLatency,
long *  maxLatency,
long *  preferredLatency,
long *  granularity 
)

Retrieve legal latency settings for the specificed device, in samples.

Parameters:
device The global index of the device about which the query is being made.
Parameters:
minLatency A pointer to the location which will recieve the minimum latency value.
Parameters:
maxLatency A pointer to the location which will recieve the maximum latency value.
Parameters:
preferredLatency A pointer to the location which will recieve the preferred latency value.
Parameters:
granularity A pointer to the location which will recieve the granularity. This value determines which values between minLatency and maxLatency are available. ie the step size, if granularity is -1 then available latency settings are powers of two.
See also:
ASIOGetBufferSize in the ASIO SDK.
Todo:
This function should be renamed to PaAsio_GetAvailableBufferSizes. No reason to use a wildly different name from the ASIO version.

References PaAsioDeviceInfo::bufferGranularity, PaUtilHostApiRepresentation::deviceInfos, PaAsioDeviceInfo::maxBufferSize, PaAsioDeviceInfo::minBufferSize, paASIO, paNoError, PaUtil_DeviceIndexToHostApiDeviceIndex(), PaUtil_GetHostApiRepresentation(), and PaAsioDeviceInfo::preferredBufferSize.

Referenced by main().

PaError PaAsio_GetInputChannelName ( PaDeviceIndex  device,
int  channelIndex,
const char **  channelName 
)

Retrieve a pointer to a string containing the name of the specified input channel. The string is valid until Pa_Terminate is called.

The string will be no longer than 32 characters including the null terminator.

References PaAsioDeviceInfo::asioChannelInfos, PaAsioDeviceInfo::commonDeviceInfo, PaUtilHostApiRepresentation::deviceInfos, PaDeviceInfo::maxInputChannels, paASIO, paInvalidChannelCount, paNoError, PaUtil_DeviceIndexToHostApiDeviceIndex(), and PaUtil_GetHostApiRepresentation().

PaError PaAsio_GetOutputChannelName ( PaDeviceIndex  device,
int  channelIndex,
const char **  channelName 
)

Retrieve a pointer to a string containing the name of the specified input channel. The string is valid until Pa_Terminate is called.

The string will be no longer than 32 characters including the null terminator.

References PaAsioDeviceInfo::asioChannelInfos, PaAsioDeviceInfo::commonDeviceInfo, PaUtilHostApiRepresentation::deviceInfos, PaDeviceInfo::maxInputChannels, PaDeviceInfo::maxOutputChannels, paASIO, paInvalidChannelCount, paNoError, PaUtil_DeviceIndexToHostApiDeviceIndex(), and PaUtil_GetHostApiRepresentation().

PaError PaAsio_Initialize ( PaUtilHostApiRepresentation **  hostApi,
PaHostApiIndex  hostApiIndex 
)

References PaAsioHostApiRepresentation::allocations, PaAsioDeviceInfo::asioChannelInfos, asioDrivers, PaAsioHostApiRepresentation::asioDrivers, PaAsioHostApiRepresentation::blockingStreamInterface, PaAsioDeviceInfo::bufferGranularity, PaAsioDriverInfo::bufferGranularity, PaAsioDriverInfo::bufferMaxSize, PaAsioDriverInfo::bufferMinSize, PaAsioDriverInfo::bufferPreferredSize, PaAsioHostApiRepresentation::callbackStreamInterface, PaAsioDeviceInfo::commonDeviceInfo, PaDeviceInfo::defaultHighInputLatency, PaDeviceInfo::defaultHighOutputLatency, PaDeviceInfo::defaultLowInputLatency, PaDeviceInfo::defaultLowOutputLatency, PaDeviceInfo::defaultSampleRate, PaDeviceInfo::hostApi, PaUtilHostApiRepresentation::info, PaAsioHostApiRepresentation::inheritedHostApiRep, PaAsioDriverInfo::inputChannelCount, IsDebuggerPresent_, PaAsioDeviceInfo::maxBufferSize, PaDeviceInfo::maxInputChannels, PaDeviceInfo::maxOutputChannels, PaAsioDeviceInfo::minBufferSize, PaDeviceInfo::name, PaAsioHostApiRepresentation::openAsioDeviceIndex, PaAsioDriverInfo::outputChannelCount, PA_ASIO_SET_LAST_ASIO_ERROR, PA_DEBUG, PA_DEFAULTSAMPLERATESEARCHORDER_COUNT_, paASIO, paInsufficientMemory, paNoDevice, paNoError, paUnanticipatedHostError, PaUtil_AllocateMemory(), PaUtil_CreateAllocationGroup(), PaUtil_DestroyAllocationGroup(), PaUtil_DummyGetCpuLoad(), PaUtil_DummyGetReadAvailable(), PaUtil_DummyGetWriteAvailable(), PaUtil_DummyRead(), PaUtil_DummyWrite(), PaUtil_FreeAllAllocations(), PaUtil_FreeMemory(), PaUtil_GroupAllocateMemory(), PaUtil_InitializeStreamInterface(), PaAsioDeviceInfo::preferredBufferSize, PaDeviceInfo::structVersion, PaHostApiInfo::structVersion, and PaAsioHostApiRepresentation::systemSpecific.

PaError PaAsio_SetStreamSampleRate ( PaStream stream,
double  sampleRate 
)

Set the sample rate of an open paASIO stream.

Parameters:
stream The stream to operate on.
Parameters:
sampleRate The new sample rate.
Note that this function may fail if the stream is alredy running and the ASIO driver does not support switching the sample rate of a running stream.
Returns paIncompatibleStreamHostApi if stream is not a paASIO stream.

References paBadStreamPtr, and paNoError.

PaError PaAsio_ShowControlPanel ( PaDeviceIndex  device,
void *  systemSpecific 
)

Display the ASIO control panel for the specified device.

Parameters:
device The global index of the device whose control panel is to be displayed.
Parameters:
systemSpecific On Windows, the calling application's main window handle, on Macintosh this value should be zero.

References PaAsioHostApiRepresentation::asioDrivers, PaAsioDeviceInfo::commonDeviceInfo, PaUtilHostApiRepresentation::deviceInfos, PaDeviceInfo::name, PaAsioHostApiRepresentation::openAsioDeviceIndex, PA_ASIO_SET_LAST_ASIO_ERROR, PA_DEBUG, paASIO, paDeviceUnavailable, paNoDevice, paNoError, paUnanticipatedHostError, PaUtil_DeviceIndexToHostApiDeviceIndex(), and PaUtil_GetHostApiRepresentation().


Variable Documentation

AsioDrivers* asioDrivers

Referenced by PaAsio_Initialize().

Referenced by PaAsio_Initialize().

const double twoRaisedTo32 = 4294967296.
Generated on Fri Jan 27 15:38:14 2012 for PortAudio by  doxygen 1.6.3