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 void PaAsioBufferConverter (void *, long, long)
typedef BOOL(WINAPI * IsDebuggerPresentPtr )(VOID)

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)


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.
minLatency A pointer to the location which will recieve the minimum latency value.
maxLatency A pointer to the location which will recieve the maximum latency value.
preferredLatency A pointer to the location which will recieve the preferred latency value.
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, GetStreamReadAvailable(), GetStreamWriteAvailable(), 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, ReadStream(), PaDeviceInfo::structVersion, PaHostApiInfo::structVersion, PaAsioHostApiRepresentation::systemSpecific, and WriteStream().

PaError PaAsio_SetStreamSampleRate ( PaStream stream,
double  sampleRate 
)

Set the sample rate of an open paASIO stream.

Parameters:
stream The stream to operate on.
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.
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 Tue Aug 9 14:05:53 2011 for PortAudio by  doxygen 1.5.7.1