From: stephane Date: Tue, 9 Apr 2002 08:36:09 +0000 (+0000) Subject: Correct error code management in PaHost_Term, removes various compiler warning X-Git-Tag: V18~27 X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=bd907d6139c0f7f7633beda515e78a8d0452c593;p=portaudio Correct error code management in PaHost_Term, removes various compiler warning --- diff --git a/pa_asio/pa_asio.cpp b/pa_asio/pa_asio.cpp index 70cd383..6fef65f 100644 --- a/pa_asio/pa_asio.cpp +++ b/pa_asio/pa_asio.cpp @@ -40,19 +40,20 @@ 08-27-01 Implementation of hostBufferSize < userBufferSize case, better management of the ouput buffer when the stream is stopped : Stephane Letz 08-28-01 Check the stream pointer for null in bufferSwitchTimeInfo, correct bug in bufferSwitchTimeInfo when - the stream is stopped : Stephane Letz + the stream is stopped : Stephane Letz 10-12-01 Correct the PaHost_CalcNumHostBuffers function: computes FramesPerHostBuffer to be the lowest that - respect requested FramesPerUserBuffer and userBuffersPerHostBuffer : Stephane Letz + respect requested FramesPerUserBuffer and userBuffersPerHostBuffer : Stephane Letz 10-26-01 Management of hostBufferSize and userBufferSize of any size : Stephane Letz 10-27-01 Improve calculus of hostBufferSize to be multiple or divisor of userBufferSize if possible : Stephane and Phil 10-29-01 Change MAX_INT32_FP to (2147483520.0f) to prevent roundup to 0x80000000 : Phil Burk 10-31-01 Clear the ouput buffer and user buffers in PaHost_StartOutput, correct bug in GetFirstMultiple : Stephane Letz 11-06-01 Rename functions : Stephane Letz 11-08-01 New Pa_ASIO_Adaptor_Init function to init Callback adpatation variables, cleanup of Pa_ASIO_Callback_Input: Stephane Letz - 11-29-01 Break apart device loading to debug random failure in Pa_ASIO_QueryDeviceInfo ; Phil Burk - 01-03-02 Desallocate all resources in PaHost_Term for cases where Pa_CloseStream is not called properly : Stephane Letz + 11-29-01 Break apart device loading to debug random failure in Pa_ASIO_QueryDeviceInfo ; Phil Burk + 01-03-02 Desallocate all resources in PaHost_Term for cases where Pa_CloseStream is not called properly : Stephane Letz 02-01-02 Cleanup, test of multiple-stream opening : Stephane Letz - 19-02-02 New Pa_ASIO_loadDriver that calls CoInitialize on each thread on Windows: Stephane Letz + 19-02-02 New Pa_ASIO_loadDriver that calls CoInitialize on each thread on Windows : Stephane Letz + 09-04-02 Correct error code management in PaHost_Term, removes various compiler warning : Stephane Letz TO DO : @@ -211,51 +212,51 @@ static bool swap = false; #endif // Prototypes -void bufferSwitch(long index, ASIOBool processNow); -ASIOTime *bufferSwitchTimeInfo(ASIOTime *timeInfo, long index, ASIOBool processNow); -void sampleRateChanged(ASIOSampleRate sRate); -long asioMessages(long selector, long value, void* message, double* opt); +static void bufferSwitch(long index, ASIOBool processNow); +static ASIOTime *bufferSwitchTimeInfo(ASIOTime *timeInfo, long index, ASIOBool processNow); +static void sampleRateChanged(ASIOSampleRate sRate); +static long asioMessages(long selector, long value, void* message, double* opt); static void Pa_StartUsageCalculation( internalPortAudioStream *past ); static void Pa_EndUsageCalculation( internalPortAudioStream *past ); -void Pa_ASIO_Convert_Inter_Input( +static void Pa_ASIO_Convert_Inter_Input( ASIOBufferInfo* nativeBuffer, void* inputBuffer, - short NumInputChannels, - short NumOuputChannels, - short framePerBuffer, - short hostFrameOffset, - short userFrameOffset, + long NumInputChannels, + long NumOuputChannels, + long framePerBuffer, + long hostFrameOffset, + long userFrameOffset, ASIOSampleType nativeFormat, PaSampleFormat paFormat, PaStreamFlags flags, - short index); + long index); -void Pa_ASIO_Convert_Inter_Output( +static void Pa_ASIO_Convert_Inter_Output( ASIOBufferInfo* nativeBuffer, void* outputBuffer, - short NumInputChannels, - short NumOuputChannels, - short framePerBuffer, - short hostFrameOffset, - short userFrameOffset, + long NumInputChannels, + long NumOuputChannels, + long framePerBuffer, + long hostFrameOffset, + long userFrameOffset, ASIOSampleType nativeFormat, PaSampleFormat paFormat, PaStreamFlags flags, - short index); + long index); - void Pa_ASIO_Clear_Output(ASIOBufferInfo* nativeBuffer, +static void Pa_ASIO_Clear_Output(ASIOBufferInfo* nativeBuffer, ASIOSampleType nativeFormat, - short NumInputChannels, - short NumOuputChannels, - int index, - int hostFrameOffset, - int frames); + long NumInputChannels, + long NumOuputChannels, + long index, + long hostFrameOffset, + long frames); -void Pa_ASIO_Callback_Input(long index); -void Pa_ASIO_Callback_Output(long index, long framePerBuffer); -void Pa_ASIO_Callback_End(); -void Pa_ASIO_Clear_User_Buffers(); +static void Pa_ASIO_Callback_Input(long index); +static void Pa_ASIO_Callback_Output(long index, long framePerBuffer); +static void Pa_ASIO_Callback_End(); +static void Pa_ASIO_Clear_User_Buffers(); // Some external references extern AsioDrivers* asioDrivers ; @@ -283,7 +284,7 @@ unsigned long get_sys_reference_time(); #endif -bool Pa_ASIO_loadAsioDriver(char *name) +static bool Pa_ASIO_loadAsioDriver(char *name) { #ifdef WINDOWS CoInitialize(0); @@ -294,11 +295,11 @@ bool Pa_ASIO_loadAsioDriver(char *name) // Utilities for alignement buffer size computation -int PGCD (int a, int b) {return (b == 0) ? a : PGCD (b,a%b);} -int PPCM (int a, int b) {return (a*b) / PGCD (a,b);} +static int PGCD (int a, int b) {return (b == 0) ? a : PGCD (b,a%b);} +static int PPCM (int a, int b) {return (a*b) / PGCD (a,b);} // Takes the size of host buffer and user buffer : returns the number of frames needed for buffer alignement -int Pa_ASIO_CalcFrameShift (int M, int N) +static int Pa_ASIO_CalcFrameShift (int M, int N) { int res = 0; for (int i = M; i < PPCM (M,N) ; i+=M) { res = max (res, i%N); } @@ -518,7 +519,7 @@ static PaError Pa_ASIO_QueryDeviceInfo( internalPortAudioDevice * ipad ) //---------------------------------------------------------------------------------- // TAKEN FROM THE ASIO SDK: -void sampleRateChanged(ASIOSampleRate sRate) +static void sampleRateChanged(ASIOSampleRate sRate) { // do whatever you need to do if the sample rate changed // usually this only happens during external sync. @@ -610,13 +611,13 @@ long asioMessages(long selector, long value, void* message, double* opt) #endif -ASIOTime *bufferSwitchTimeInfo(ASIOTime *timeInfo, long index, ASIOBool processNow) +static ASIOTime *bufferSwitchTimeInfo(ASIOTime *timeInfo, long index, ASIOBool processNow) { // the actual processing callback. // Beware that this is normally in a seperate thread, hence be sure that you take care // about thread synchronization. This is omitted here for simplicity. - static processedSamples = 0; + // static processedSamples = 0; int result = 0; // store the timeInfo for later use @@ -760,7 +761,7 @@ inline static long Pa_TriangularDither( void ) // TO BE COMPLETED WITH ALL SUPPORTED PA SAMPLE TYPES //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Input_Int16_Flot32 (ASIOBufferInfo* nativeBuffer, float *inBufPtr, int framePerBuffer, int NumInputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Input_Int16_Float32 (ASIOBufferInfo* nativeBuffer, float *inBufPtr, int framePerBuffer, int NumInputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -780,7 +781,7 @@ inline static long Pa_TriangularDither( void ) } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Input_Int32_Flot32 (ASIOBufferInfo* nativeBuffer, float *inBufPtr, int framePerBuffer, int NumInputChannels, int index, int hostFrameOffset,int userFrameOffset,bool swap) +static void Input_Int32_Float32 (ASIOBufferInfo* nativeBuffer, float *inBufPtr, int framePerBuffer, int NumInputChannels, int index, int hostFrameOffset,int userFrameOffset,bool swap) { long temp; int i,j; @@ -800,17 +801,17 @@ inline static long Pa_TriangularDither( void ) //------------------------------------------------------------------------------------------------------------------------------------------------------- // MUST BE TESTED - void Input_Float32_Flot32 (ASIOBufferInfo* nativeBuffer, float *inBufPtr, int framePerBuffer, int NumInputChannels, int index, int hostFrameOffset,int userFrameOffset,bool swap) +static void Input_Float32_Float32 (ASIOBufferInfo* nativeBuffer, float *inBufPtr, int framePerBuffer, int NumInputChannels, int index, int hostFrameOffset,int userFrameOffset,bool swap) { - long temp; + unsigned long temp; int i,j; for( j=0; j>16; + *userBufPtr = (short)(temp>>16); userBufPtr += NumInputChannels; } } @@ -928,7 +929,7 @@ inline static long Pa_TriangularDither( void ) temp = (temp >> 1) + Pa_TriangularDither(); temp = temp >> 15; temp = (short) ClipShort(temp); - *userBufPtr = temp; + *userBufPtr = (short)temp; userBufPtr += NumInputChannels; } } @@ -938,19 +939,19 @@ inline static long Pa_TriangularDither( void ) //------------------------------------------------------------------------------------------------------------------------------------------------------- // MUST BE TESTED - void Input_Float32_Int16 (ASIOBufferInfo* nativeBuffer, short *inBufPtr, int framePerBuffer, int NumInputChannels, int index, int hostFrameOffset,int userFrameOffset,uint32 flags,bool swap) +static void Input_Float32_Int16 (ASIOBufferInfo* nativeBuffer, short *inBufPtr, int framePerBuffer, int NumInputChannels, int index, int hostFrameOffset,int userFrameOffset,uint32 flags,bool swap) { - long temp; + unsigned long temp; int i,j; if( flags & paDitherOff ) { for( j=0; j> 16); if (swap) temp = SwapShort(temp); - asioBufPtr[i] = temp; + asioBufPtr[i] = (short)temp; userBufPtr += NumOuputChannels; } } @@ -1392,7 +1394,7 @@ inline static long Pa_TriangularDither( void ) temp = temp >> 15; temp = (short) ClipShort(temp); if (swap) temp = SwapShort(temp); - asioBufPtr[i] = temp; + asioBufPtr[i] = (short)temp; userBufPtr += NumOuputChannels; } } @@ -1400,7 +1402,7 @@ inline static long Pa_TriangularDither( void ) } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Output_Int32_Int32(ASIOBufferInfo* nativeBuffer, long *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset,uint32 flags,bool swap) +static void Output_Int32_Int32(ASIOBufferInfo* nativeBuffer, long *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset,uint32 flags,bool swap) { long temp; int i,j; @@ -1422,7 +1424,7 @@ inline static long Pa_TriangularDither( void ) //------------------------------------------------------------------------------------------------------------------------------------------------------- // MUST BE CHECKED - void Output_Int32_Float32(ASIOBufferInfo* nativeBuffer, long *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset,uint32 flags,bool swap) +static void Output_Int32_Float32(ASIOBufferInfo* nativeBuffer, long *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset,uint32 flags,bool swap) { long temp; int i,j; @@ -1442,7 +1444,7 @@ inline static long Pa_TriangularDither( void ) } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Output_Int16_Int16(ASIOBufferInfo* nativeBuffer, short *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset, int userFrameOffset,bool swap) +static void Output_Int16_Int16(ASIOBufferInfo* nativeBuffer, short *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset, int userFrameOffset,bool swap) { long temp; int i,j; @@ -1455,14 +1457,14 @@ inline static long Pa_TriangularDither( void ) { temp = *userBufPtr; if (swap) temp = SwapShort(temp); - asioBufPtr[i] = temp; + asioBufPtr[i] = (short)temp; userBufPtr += NumOuputChannels; } } } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Output_Int16_Int32(ASIOBufferInfo* nativeBuffer, short *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Output_Int16_Int32(ASIOBufferInfo* nativeBuffer, short *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -1483,7 +1485,7 @@ inline static long Pa_TriangularDither( void ) //------------------------------------------------------------------------------------------------------------------------------------------------------- // MUST BE CHECKED - void Output_Int16_Float32(ASIOBufferInfo* nativeBuffer, short *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Output_Int16_Float32(ASIOBufferInfo* nativeBuffer, short *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -1501,7 +1503,7 @@ inline static long Pa_TriangularDither( void ) } } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Output_Int8_Int16(ASIOBufferInfo* nativeBuffer, char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Output_Int8_Int16(ASIOBufferInfo* nativeBuffer, char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -1514,14 +1516,14 @@ inline static long Pa_TriangularDither( void ) { temp = (short)(*userBufPtr)<<8; if (swap) temp = SwapShort(temp); - asioBufPtr[i] = temp; + asioBufPtr[i] = (short)temp; userBufPtr += NumOuputChannels; } } } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Output_Int8_Int32(ASIOBufferInfo* nativeBuffer, char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Output_Int8_Int32(ASIOBufferInfo* nativeBuffer, char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -1543,7 +1545,7 @@ inline static long Pa_TriangularDither( void ) //------------------------------------------------------------------------------------------------------------------------------------------------------- // MUST BE CHECKED - void Output_Int8_Float32(ASIOBufferInfo* nativeBuffer, char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Output_Int8_Float32(ASIOBufferInfo* nativeBuffer, char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -1562,7 +1564,7 @@ inline static long Pa_TriangularDither( void ) } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Output_IntU8_Int16(ASIOBufferInfo* nativeBuffer, unsigned char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Output_IntU8_Int16(ASIOBufferInfo* nativeBuffer, unsigned char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -1575,14 +1577,14 @@ inline static long Pa_TriangularDither( void ) { temp = ((short)((*userBufPtr) - 0x80)) << 8; if (swap) temp = SwapShort(temp); - asioBufPtr[i] = temp; + asioBufPtr[i] = (short)temp; userBufPtr += NumOuputChannels; } } } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Output_IntU8_Int32(ASIOBufferInfo* nativeBuffer, unsigned char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Output_IntU8_Int32(ASIOBufferInfo* nativeBuffer, unsigned char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -1604,7 +1606,7 @@ inline static long Pa_TriangularDither( void ) //------------------------------------------------------------------------------------------------------------------------------------------------------- // MUST BE CHECKED - void Output_IntU8_Float32(ASIOBufferInfo* nativeBuffer, unsigned char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) +static void Output_IntU8_Float32(ASIOBufferInfo* nativeBuffer, unsigned char *outBufPtr, int framePerBuffer, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset,int userFrameOffset, bool swap) { long temp; int i,j; @@ -1623,7 +1625,7 @@ inline static long Pa_TriangularDither( void ) } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Pa_ASIO_Clear_Output_16 (ASIOBufferInfo* nativeBuffer, int frames, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset) +static void Pa_ASIO_Clear_Output_16 (ASIOBufferInfo* nativeBuffer, long frames, long NumInputChannels, long NumOuputChannels, long index, long hostFrameOffset) { int i,j; @@ -1634,7 +1636,7 @@ inline static long Pa_TriangularDither( void ) } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Pa_ASIO_Clear_Output_32 (ASIOBufferInfo* nativeBuffer, int frames, int NumInputChannels, int NumOuputChannels, int index, int hostFrameOffset) +static void Pa_ASIO_Clear_Output_32 (ASIOBufferInfo* nativeBuffer, long frames, long NumInputChannels, long NumOuputChannels, long index, long hostFrameOffset) { int i,j; @@ -1646,7 +1648,7 @@ inline static long Pa_TriangularDither( void ) //------------------------------------------------------------------------------------------------------------------------------------------------------- -void Pa_ASIO_Adaptor_Init() +static void Pa_ASIO_Adaptor_Init() { if (asioDriverInfo.past->past_FramesPerUserBuffer <= asioDriverInfo.past_FramesPerHostBuffer) { asioDriverInfo.pahsc_hostOutputBufferFrameOffset = asioDriverInfo.pahsc_OutputBufferOffset; @@ -1662,7 +1664,7 @@ void Pa_ASIO_Adaptor_Init() //------------------------------------------------------------------------------------------------------------------------------------------------------- // FIXME : optimization for Input only or output only modes (really necessary ??) -void Pa_ASIO_Callback_Input( long index) +static void Pa_ASIO_Callback_Input( long index) { internalPortAudioStream *past = asioDriverInfo.past; long framesInputHostBuffer = asioDriverInfo.past_FramesPerHostBuffer; // number of frames available into the host input buffer @@ -1760,7 +1762,7 @@ void Pa_ASIO_Callback_Input( long index) } //------------------------------------------------------------------------------------------------------------------------------------------------------- -void Pa_ASIO_Callback_Output(long index, long framePerBuffer) +static void Pa_ASIO_Callback_Output(long index, long framePerBuffer) { internalPortAudioStream *past = asioDriverInfo.past; @@ -1787,14 +1789,14 @@ void Pa_ASIO_Callback_Output(long index, long framePerBuffer) } } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Pa_ASIO_Callback_End() +static void Pa_ASIO_Callback_End() { /* Empty ASIO ouput : write offset */ asioDriverInfo.pahsc_hostOutputBufferFrameOffset = 0; } //------------------------------------------------------------------------------------------------------------------------------------------------------- -void Pa_ASIO_Clear_User_Buffers() +static void Pa_ASIO_Clear_User_Buffers() { if( asioDriverInfo.past->past_InputBuffer != NULL ) { @@ -1807,13 +1809,13 @@ void Pa_ASIO_Clear_User_Buffers() } //------------------------------------------------------------------------------------------------------------------------------------------------------- - void Pa_ASIO_Clear_Output(ASIOBufferInfo* nativeBuffer, + static void Pa_ASIO_Clear_Output(ASIOBufferInfo* nativeBuffer, ASIOSampleType nativeFormat, - short NumInputChannels, - short NumOuputChannels, - int index, - int hostFrameOffset, - int frames) + long NumInputChannels, + long NumOuputChannels, + long index, + long hostFrameOffset, + long frames) { switch (nativeFormat) { @@ -1853,18 +1855,18 @@ void Pa_ASIO_Clear_User_Buffers() //--------------------------------------------------------------------------------------- -void Pa_ASIO_Convert_Inter_Input( +static void Pa_ASIO_Convert_Inter_Input( ASIOBufferInfo* nativeBuffer, void* inputBuffer, - short NumInputChannels, - short NumOuputChannels, - short framePerBuffer, - short hostFrameOffset, - short userFrameOffset, + long NumInputChannels, + long NumOuputChannels, + long framePerBuffer, + long hostFrameOffset, + long userFrameOffset, ASIOSampleType nativeFormat, PaSampleFormat paFormat, PaStreamFlags flags, - short index) + long index) { if((NumInputChannels > 0) && (nativeBuffer != NULL)) @@ -1878,22 +1880,22 @@ void Pa_ASIO_Convert_Inter_Input( switch (nativeFormat) { case ASIOSTInt16LSB: - Input_Int16_Flot32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset, swap); + Input_Int16_Float32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset, swap); break; case ASIOSTInt16MSB: - Input_Int16_Flot32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,!swap); + Input_Int16_Float32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,!swap); break; case ASIOSTInt32LSB: - Input_Int32_Flot32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,swap); + Input_Int32_Float32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,swap); break; case ASIOSTInt32MSB: - Input_Int32_Flot32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,!swap); + Input_Int32_Float32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,!swap); break; case ASIOSTFloat32LSB: // IEEE 754 32 bit float, as found on Intel x86 architecture - Input_Float32_Flot32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,swap); + Input_Float32_Float32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,swap); break; case ASIOSTFloat32MSB: // IEEE 754 32 bit float, as found on Intel x86 architecture - Input_Float32_Flot32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,!swap); + Input_Float32_Float32(nativeBuffer, inBufPtr, framePerBuffer, NumInputChannels, index, hostFrameOffset, userFrameOffset,!swap); break; case ASIOSTInt24LSB: // used for 20 bits as well @@ -2133,20 +2135,20 @@ void Pa_ASIO_Convert_Inter_Input( //--------------------------------------------------------------------------------------- -void Pa_ASIO_Convert_Inter_Output(ASIOBufferInfo* nativeBuffer, +static void Pa_ASIO_Convert_Inter_Output(ASIOBufferInfo* nativeBuffer, void* outputBuffer, - short NumInputChannels, - short NumOuputChannels, - short framePerBuffer, - short hostFrameOffset, - short userFrameOffset, + long NumInputChannels, + long NumOuputChannels, + long framePerBuffer, + long hostFrameOffset, + long userFrameOffset, ASIOSampleType nativeFormat, PaSampleFormat paFormat, PaStreamFlags flags, - short index) + long index) { - if((NumOuputChannels > 0) && (nativeBuffer != NULL)) + if((NumOuputChannels > 0) && (nativeBuffer != NULL)) { /* Convert from PA format to native format */ @@ -2427,7 +2429,7 @@ static PaError Pa_ASIO_loadDevice (long device) } //--------------------------------------------------- -static int GetHighestBitPosition( unsigned long n ) +static int GetHighestBitPosition (unsigned long n) { int pos = -1; while( n != 0 ) @@ -2438,10 +2440,10 @@ static int GetHighestBitPosition( unsigned long n ) return pos; } -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------ static int GetFirstMultiple(long min, long val ){ return ((min + val - 1) / val) * val; } -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------ static int GetFirstPossibleDivisor(long max, long val ) { for (int i = 2; i < 20; i++) {if (((val%i) == 0) && ((val/i) <= max)) return (val/i); } @@ -2563,26 +2565,29 @@ PaError PaHost_Term( void ) int i; PaDeviceInfo *dev; double *rates; - PaError result = paNoError; - - /* Free allocated sample rate arrays and names*/ - for( i=0; isampleRates; - if((rates != NULL)) PaHost_FreeFastMemory(rates, MAX_NUMSAMPLINGRATES * sizeof(double)); - dev->sampleRates = NULL; - if(dev->name != NULL) PaHost_FreeFastMemory((void *) dev->name, 32); - dev->name = NULL; - } - - sNumDevices = 0; - - /* Dispose : if not done by Pa_CloseStream */ - if(ASIODisposeBuffers() != ASE_OK) result = paHostError; - if(ASIOExit() != ASE_OK) result = paHostError; - - /* remove the loaded ASIO driver */ - asioDrivers->removeCurrentDriver(); + PaError result = paNoError; + + if (sNumDevices > 0) { + + /* Free allocated sample rate arrays and names*/ + for( i=0; isampleRates; + if((rates != NULL)) PaHost_FreeFastMemory(rates, MAX_NUMSAMPLINGRATES * sizeof(double)); + dev->sampleRates = NULL; + if(dev->name != NULL) PaHost_FreeFastMemory((void *) dev->name, 32); + dev->name = NULL; + } + + sNumDevices = 0; + + /* Dispose : if not done by Pa_CloseStream */ + if(ASIODisposeBuffers() != ASE_OK) result = paHostError; + if(ASIOExit() != ASE_OK) result = paHostError; + + /* remove the loaded ASIO driver */ + asioDrivers->removeCurrentDriver(); + } return result; }