diff --git a/pcsx2/windows/VCprojects/pcsx2_2008.vcproj b/pcsx2/windows/VCprojects/pcsx2_2008.vcproj index da532cd640..bd365025e9 100644 --- a/pcsx2/windows/VCprojects/pcsx2_2008.vcproj +++ b/pcsx2/windows/VCprojects/pcsx2_2008.vcproj @@ -2,7 +2,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/spu2ghz/asio/ASIOConvertSamples.cpp b/plugins/spu2ghz/asio/ASIOConvertSamples.cpp deleted file mode 100644 index 3db47ec173..0000000000 --- a/plugins/spu2ghz/asio/ASIOConvertSamples.cpp +++ /dev/null @@ -1,878 +0,0 @@ -#include "ginclude.h" -#include "ASIOConvertSamples.h" -#include - -#if MAC -#define TRUNCATE 0 - -#elif ASIO_CPU_X86 || ASIO_CPU_SPARC || ASIO_CPU_MIPS -#define TRUNCATE 1 -#undef MAXFLOAT -#define MAXFLOAT 0x7fffff00L -#endif - -ASIOConvertSamples::ASIOConvertSamples() -{ -} - - -//------------------------------------------------------------------------------------------- -// mono - -void ASIOConvertSamples::convertMono8Unsigned(long *source, char *dest, long frames) -{ - unsigned char *c = (unsigned char *)source; - unsigned char a; - - dest--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = c[3]; -#else - a = c[0]; -#endif - c += 4; - a -= 0x80U; - *++dest = a; - } -} - -void ASIOConvertSamples::convertMono8(long *source, char *dest, long frames) -{ - char *c = (char *)source; - char a; - - dest--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = c[3]; -#else - a = c[0]; -#endif - c += 4; - *++dest = a; - } -} - -void ASIOConvertSamples::convertMono16(long *source, short *dest, long frames) -{ -#if ASIO_LITTLE_ENDIAN - char* s = (char*)source; - char* d = (char*)dest; - while(--frames >= 0) - { - *d++ = s[3]; // dest big endian, msb first - *d++ = s[2]; - s += 4; - } -#else - long l; - - source--; - dest--; - while(--frames >= 0) - { - l = *++source; - *++dest = (short)(l >> 16); - } -#endif -} - -void ASIOConvertSamples::convertMono24(long *source, char *dest, long frames) -{ - // work with chars in order to prevent misalignments - char *s = (char *)source; - char a, b, c; - - dest--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = s[3]; // msb - b = s[2]; - c = s[1]; // lsb -#else - a = s[0]; - b = s[1]; - c = s[2]; -#endif - s += 4; - *++dest = a; // big endian, msb first - *++dest = b; - *++dest = c; - } -} - -// small endian - -void ASIOConvertSamples::convertMono16SmallEndian(long *source, short *dest, long frames) -{ - char *s = (char *)source; - char *d = (char *)dest; - char a, b; - - d--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = s[3]; - b = s[2]; -#else - a = s[0]; - b = s[1]; -#endif - s += 4; - *++d = b; // dest small endian, lsb first - *++d = a; - } -} - -void ASIOConvertSamples::convertMono24SmallEndian(long *source, char *dest, long frames) -{ - // work with chars in order to prevent misalignments - char *s = (char *)source; - char a, b, c; - - dest--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = s[3]; - b = s[2]; - c = s[1]; -#else - a = s[0]; - b = s[1]; - c = s[2]; -#endif - s += 4; - *++dest = c; // lsb first - *++dest = b; - *++dest = a; - } -} - - -//------------------------------------------------------------------------------------------- -// stereo interleaved - -void ASIOConvertSamples::convertStereo8InterleavedUnsigned(long *left, long *right, char *dest, long frames) -{ - unsigned char *cl = (unsigned char *)left; - unsigned char *cr = (unsigned char *)right; - unsigned char a, b; - - dest--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = cl[3]; - b = cr[3]; -#else - a = cl[0]; - b = cr[0]; -#endif - cl += 4; - cr += 4; - a -= 0x80U; - b -= 0x80U; - *++dest = a; - *++dest = b; - } -} - -void ASIOConvertSamples::convertStereo8Interleaved(long *left, long *right, char *dest, long frames) -{ - unsigned char *cl = (unsigned char *)left; - unsigned char *cr = (unsigned char *)right; - unsigned char a, b; - - dest--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = cl[3]; - b = cr[3]; -#else - a = cl[0]; - b = cr[0]; -#endif - cl += 4; - cr += 4; - *++dest = a; - *++dest = b; - } -} - -void ASIOConvertSamples::convertStereo16Interleaved(long *left, long *right, short *dest, long frames) -{ -#if ASIO_LITTLE_ENDIAN - char* sl = (char*)left; - char* sr = (char*)right; - char* d = (char*)dest; - while(--frames >= 0) - { - *d++ = sl[3]; // msb first - *d++ = sl[2]; - *d++ = sr[3]; - *d++ = sr[2]; - sl += 4; - sr += 4; - } -#else - long l, r; - - left--; - right--; - dest--; - while(--frames >= 0) - { - l = *++left; - r = *++right; - *++dest = (short)(l >> 16); - *++dest = (short)(r >> 16); - } -#endif -} - -void ASIOConvertSamples::convertStereo24Interleaved(long *left, long *right, char *dest, long frames) -{ - // work with chars in order to prevent misalignments - char *sl = (char *)left; - char *sr = (char *)right; - char al, bl, cl, ar, br, cr; - - dest--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - al = sl[3]; - bl = sl[2]; - cl = sl[1]; - ar = sr[3]; - br = sr[2]; - cr = sr[1]; -#else - al = sl[0]; - bl = sl[1]; - cl = sl[2]; - ar = sr[0]; - br = sr[1]; - cr = sr[2]; -#endif - sl += 4; - sr += 4; - *++dest = al; - *++dest = bl; - *++dest = cl; - *++dest = ar; - *++dest = br; - *++dest = cr; - } -} - -void ASIOConvertSamples::convertStereo16InterleavedSmallEndian(long *left, long *right, short *dest, long frames) -{ - char *sl = (char *)left; - char *sr = (char *)right; - char *d = (char *)dest; - char al, bl, ar, br; - - d--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - al = sl[3]; - bl = sl[2]; - ar = sr[3]; - br = sr[2]; -#else - al = sl[0]; - bl = sl[1]; - ar = sr[0]; - br = sr[1]; -#endif - sl += 4; - sr += 4; - *++d = bl; // lsb first - *++d = al; - *++d = br; - *++d = ar; - } -} - -void ASIOConvertSamples::convertStereo24InterleavedSmallEndian(long *left, long *right, char *dest, long frames) -{ - // work with chars in order to prevent misalignments - char *sl = (char *)left; - char *sr = (char *)right; - char al, bl, cl, ar, br, cr; - - dest--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - al = sl[3]; - bl = sl[2]; - cl = sl[1]; - ar = sr[3]; - br = sr[2]; - cr = sr[1]; -#else - al = sl[0]; - bl = sl[1]; - cl = sl[2]; - ar = sr[0]; - br = sr[1]; - cr = sr[2]; -#endif - sl += 4; - sr += 4; - *++dest = cl; - *++dest = bl; - *++dest = al; - *++dest = cr; - *++dest = br; - *++dest = ar; - } -} - - -//------------------------------------------------------------------------------------------- -// stereo split - -void ASIOConvertSamples::convertStereo8Unsigned(long *left, long *right, char *dLeft, char *dRight, long frames) -{ - unsigned char *cl = (unsigned char *)left; - unsigned char *cr = (unsigned char *)right; - unsigned char a, b; - - dLeft--; - dRight--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = cl[3]; - b = cr[3]; -#else - a = cl[0]; - b = cr[0]; -#endif - cl += 4; - cr += 4; - a -= 0x80U; - b -= 0x80U; - *++dLeft = a; - *++dRight = b; - } -} - -void ASIOConvertSamples::convertStereo8(long *left, long *right, char *dLeft, char *dRight, long frames) -{ - unsigned char *cl = (unsigned char *)left; - unsigned char *cr = (unsigned char *)right; - unsigned char a, b; - - dLeft--; - dRight--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = cl[3]; - b = cr[3]; -#else - a = cl[0]; - b = cr[0]; -#endif - cl += 4; - cr += 4; - *++dLeft = a; - *++dRight = b; - } -} - -void ASIOConvertSamples::convertStereo16(long *left, long *right, short *dLeft, short *dRight, long frames) -{ -#if ASIO_LITTLE_ENDIAN - char* sl = (char*)left; - char* sr = (char*)right; - char* dl = (char*)dLeft; - char* dr = (char*)dRight; - while(--frames >= 0) - { - *dl++ = sl[3]; // msb first - *dl++ = sl[2]; - *dr++ = sr[3]; - *dr++ = sr[2]; - sl += 4; - sr += 4; - } -#else - long l, r; - - left--; - right--; - dLeft--; - dRight--; - while(--frames >= 0) - { - l = *++left; - r = *++right; - *++dLeft = (short)(l >> 16); - *++dRight = (short)(r >> 16); - } -#endif -} - -void ASIOConvertSamples::convertStereo24(long *left, long *right, char *dLeft, char *dRight, long frames) -{ - // work with chars in order to prevent misalignments - char *sl = (char *)left; - char *sr = (char *)right; - char al, bl, cl, ar, br, cr; - - dLeft--; - dRight--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - al = sl[3]; - bl = sl[2]; - cl = sl[1]; - ar = sr[3]; - br = sr[2]; - cr = sr[1]; -#else - al = sl[0]; - bl = sl[1]; - cl = sl[2]; - ar = sr[0]; - br = sr[1]; - cr = sr[2]; -#endif - sl += 4; - sr += 4; - *++dLeft = al; - *++dLeft = bl; - *++dLeft = cl; - *++dRight = ar; - *++dRight = br; - *++dRight = cr; - } -} - -// small endian -void ASIOConvertSamples::convertStereo16SmallEndian(long *left, long *right, short *dLeft, short *dRight, long frames) -{ - char *sl = (char *)left; - char *sr = (char *)right; - char *dl = (char *)dLeft; - char *dr = (char *)dRight; - char al, bl, ar, br; - - dl--; - dr--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - al = sl[3]; - bl = sl[2]; - ar = sr[3]; - br = sr[2]; -#else - al = sl[0]; - bl = sl[1]; - ar = sr[0]; - br = sr[1]; -#endif - sl += 4; - sr += 4; - *++dl = bl; - *++dl = al; - *++dr = br; - *++dr = ar; - } -} - -void ASIOConvertSamples::convertStereo24SmallEndian(long *left, long *right, char *dLeft, char *dRight, long frames) -{ - // work with chars in order to prevent misalignments - char *sl = (char *)left; - char *sr = (char *)right; - char al, bl, cl, ar, br, cr; - - dLeft--; - dRight--; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - al = sl[3]; - bl = sl[2]; - cl = sl[1]; - ar = sr[3]; - br = sr[2]; - cr = sr[1]; -#else - al = sl[0]; - bl = sl[1]; - cl = sl[2]; - ar = sr[0]; - br = sr[1]; - cr = sr[2]; -#endif - sl += 4; - sr += 4; - *++dLeft = cl; - *++dLeft = bl; - *++dLeft = al; - *++dRight = cr; - *++dRight = br; - *++dRight = ar; - } -} - -//------------------------------------------------------------------------------------------ -// in place integer conversions - -void ASIOConvertSamples::int32msb16to16inPlace(long *in, long frames) -{ - short *d1 = (short *)in; - short* out = d1; -#if ASIO_LITTLE_ENDIAN - d1++; -#endif - while(--frames >= 0) - { - *out++ = *d1; - d1 += 2; - } -} - -void ASIOConvertSamples::int32lsb16to16inPlace(long *in, long frames) -{ - short *d1 = (short *)in; - short* out = d1; -#if !ASIO_LITTLE_ENDIAN - d1++; -#endif - while(--frames >= 0) - { - *out++ = *d1; - d1 += 2; - } -} - -void ASIOConvertSamples::int32msb16shiftedTo16inPlace(long *in, long frames, long shift) -{ - short* out = (short*)in; - while(--frames >= 0) - *out++ = (short)(*in++ >> shift); -} - -void ASIOConvertSamples::int24msbto16inPlace(unsigned char *in, long frames) -{ - short a; - short* out = (short*)in; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = (short)in[2]; - a <<= 8; - a |= (in[1] & 0xff); -#else - a = (short)in[0]; - a <<= 8; - a |= (in[1] & 0xff); -#endif - *out++ = a; - in += 3; - } -} - -//----------------------------------------------------------------------------------------- - -void ASIOConvertSamples::shift32(void* buffer, long shiftAmount, long targetByteWidth, - bool revertEndian, long sampleFrames) -{ - long a; - long frames = sampleFrames; - long* source = (long*)buffer; - if(revertEndian) - { - reverseEndian(buffer, 4, sampleFrames); - revertEndian = false; - } - - if(targetByteWidth == 2) - { - short* dest = (short*)buffer; - short* al = (short*)&a; -#if ASIO_LITTLE_ENDIAN - al++; -#endif - while(--frames >= 0) - { - a = *source++; - a <<= shiftAmount; - *dest++ = *al; - } - } - - else if(targetByteWidth == 3) - { - char* dest = (char*)buffer; - source = (long*)buffer; - char* aa = (char*)&a; - while(--frames >= 0) - { - a = *source++; - a <<= shiftAmount; -#if ASIO_LITTLE_ENDIAN - dest[0] = aa[1]; // lsb - dest[1] = aa[2]; - dest[2] = aa[3]; // msb -#else - dest[0] = aa[0]; // msb - dest[1] = aa[1]; - dest[2] = aa[2]; // lsb -#endif - dest += 3; - } - } - - else if(targetByteWidth == 4) - { - long* dest = source; - while(--frames >= 0) - *dest++ = *source++ << shiftAmount; - } -} - -void ASIOConvertSamples::reverseEndian(void* buffer, long byteWidth, long frames) -{ - char* a = (char*)buffer; - char* b = a; - char c; - if(byteWidth == 2) - { - while(--frames >= 0) - { - c = a[0]; - a[0] = a[1]; - a[1] = c; - a += 2; - } - } - else if(byteWidth == 3) - { - while(--frames >= 0) - { - c = a[0]; - a[0] = a[2]; - a[2] = c; - a += 3; - } - } - else if(byteWidth == 4) - { - while(--frames >= 0) - { - c = a[0]; - a[0] = a[3]; - a[3] = c; - c = a[1]; - a[1] = a[2]; - a[2] = c; - a += 4; - } - } - else if(byteWidth == 8) - { - while(--frames >= 0) - { - c = a[0]; - a[0] = a[7]; - a[7] = c; - c = a[1]; - a[1] = a[6]; - a[6] = c; - c = a[2]; - a[2] = a[5]; - a[5] = c; - c = a[3]; - a[3] = a[4]; - a[4] = c; - a += 4; - } - } -} - -//------------------------------------------------------------------------------------------------- - -void ASIOConvertSamples::int32to16inPlace(void* buffer, long frames) -{ - short* in = (short*)buffer; - short* out = in; -#if ASIO_LITTLE_ENDIAN - in++; -#endif - while(--frames >= 0) - { - *out++ = *in; - in += 2; - } -} - -void ASIOConvertSamples::int24to16inPlace(void* buffer, long frames) -{ - char* from = (char*)buffer; - char* to = from; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - to[0] = from[1]; - to[1] = from[2]; -#else - to[0] = from[0]; - to[1] = from[1]; -#endif - from += 3; - to += 2; - } -} - -void ASIOConvertSamples::int32to24inPlace(void* buffer, long frames) -{ - long* in = (long*)buffer; - char* out = (char*)buffer; - long a; - while(--frames >= 0) - { - a = *in++; - a >>= 8; // 32->24 -#if ASIO_LITTLE_ENDIAN - out[0] = (char)a; // lsb - a >>= 8; - out[1] = (char)a; - a >>= 8; - out[2] = (char)a; -#else - out[2] = (char)a; // lsb - a >>= 8; - out[1] = (char)a; - a >>= 8; - out[0] = (char)a; -#endif - out += 3; - } -} - -void ASIOConvertSamples::int16to24inPlace(void* buffer, long frames) -{ - char* in = (char*)buffer; - char* out = (char*)buffer; - in += frames * 2; - out += frames * 3; - while(--frames >= 0) - { - out -= 3; - in -= 2; -#if ASIO_LITTLE_ENDIAN - out[2] = in[1]; // msb - out[1] = in[0]; // lsb - out[0] = 0; -#else - out[2] = 0; - out[1] = in[1]; // lsb - out[0] = in[0]; // msb -#endif - } -} - -void ASIOConvertSamples::int24to32inPlace(void* buffer, long frames) -{ - long a, b, c; - char* in = (char*)buffer; - long* out = (long*)buffer; - in += (frames * 3); - out += frames; - while(--frames >= 0) - { -#if ASIO_LITTLE_ENDIAN - a = (long)in[-1]; // msb - b = (long)in[-2]; - c = (long)in[-3]; -#else - a = (long)in[-3]; // msb - b = (long)in[-2]; - c = (long)in[-1]; -#endif - a <<= 24; - b <<= 16; - b &= 0x00ff0000; - a |= b; - c <<= 8; - c &= 0x0000ff00; - a |= c; - *--out = a; - in -= 3; - } -} - -void ASIOConvertSamples::int16to32inPlace(void* buffer, long frames) -{ - short* in = (short*)buffer; - long* out = (long*)buffer; - in += frames; - out += frames; - while(--frames >= 0) - *--out = ((long)(*--in)) << 16; -} - -//------------------------------------------------------------------------------------------ -// float to int - -const double fScaler16 = (double)0x7fffL; -const double fScaler24 = (double)0x7fffffL; -const double fScaler32 = (double)0x7fffffffL; - -void ASIOConvertSamples::float32toInt16inPlace(float* buffer, long frames) -{ - double sc = fScaler16 + .49999; - short* b = (short*)buffer; - while(--frames >= 0) - *b++ = (short)((double)(*buffer++) * sc); -} - -void ASIOConvertSamples::float32toInt24inPlace(float* buffer, long frames) -{ - double sc = fScaler24 + .49999; - long a; - char* b = (char*)buffer; - char* aa = (char*)&a; - - while(--frames >= 0) - { - a = (long)((double)(*buffer++) * sc); -#if ASIO_LITTLE_ENDIAN - *b++ = aa[3]; - *b++ = aa[2]; - *b++ = aa[1]; -#else - *b++ = aa[1]; - *b++ = aa[2]; - *b++ = aa[3]; -#endif - } -} - -void ASIOConvertSamples::float32toInt32inPlace(float* buffer, long frames) -{ - double sc = fScaler32 + .49999; - long* b = (long*)buffer; - while(--frames >= 0) - *b++ = (long)((double)(*buffer++) * sc); -} - diff --git a/plugins/spu2ghz/asio/ASIOConvertSamples.h b/plugins/spu2ghz/asio/ASIOConvertSamples.h deleted file mode 100644 index d1918a2d32..0000000000 --- a/plugins/spu2ghz/asio/ASIOConvertSamples.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef __ASIOConvertSamples__ -#define __ASIOConvertSamples__ - -class ASIOConvertSamples -{ -public: - ASIOConvertSamples(); - ~ASIOConvertSamples() {} - - // format converters, input 32 bit integer - // mono - void convertMono8(long *source, char *dest, long frames); - void convertMono8Unsigned(long *source, char *dest, long frames); - void convertMono16(long *source, short *dest, long frames); - void convertMono16SmallEndian(long *source, short *dest, long frames); - void convertMono24(long *source, char *dest, long frames); - void convertMono24SmallEndian(long *source, char *dest, long frames); - - // stereo interleaved - void convertStereo8Interleaved(long *left, long *right, char *dest, long frames); - void convertStereo8InterleavedUnsigned(long *left, long *right, char *dest, long frames); - void convertStereo16Interleaved(long *left, long *right, short *dest, long frames); - void convertStereo16InterleavedSmallEndian(long *left, long *right, short *dest, long frames); - void convertStereo24Interleaved(long *left, long *right, char *dest, long frames); - void convertStereo24InterleavedSmallEndian(long *left, long *right, char *dest, long frames); - - // stereo split - void convertStereo8(long *left, long *right, char *dLeft, char *dRight, long frames); - void convertStereo8Unsigned(long *left, long *right, char *dLeft, char *dRight, long frames); - void convertStereo16(long *left, long *right, short *dLeft, short *dRight, long frames); - void convertStereo16SmallEndian(long *left, long *right, short *dLeft, short *dRight, long frames); - void convertStereo24(long *left, long *right, char *dLeft, char *dRight, long frames); - void convertStereo24SmallEndian(long *left, long *right, char *dLeft, char *dRight, long frames); - - // integer in place conversions - - void int32msb16to16inPlace(long *in, long frames); - void int32lsb16to16inPlace(long *in, long frames); - void int32msb16shiftedTo16inPlace(long *in1, long frames, long shift); - void int24msbto16inPlace(unsigned char *in, long frames); - - // integer to integer - - void shift32(void* buffer, long shiftAmount, long targetByteWidth, - bool reverseEndian, long frames); - void reverseEndian(void* buffer, long byteWidth, long frames); - - void int32to16inPlace(void* buffer, long frames); - void int24to16inPlace(void* buffer, long frames); - void int32to24inPlace(void* buffer, long frames); - void int16to24inPlace(void* buffer, long frames); - void int24to32inPlace(void* buffer, long frames); - void int16to32inPlace(void* buffer, long frames); - - // float to integer - - void float32toInt16inPlace(float* buffer, long frames); - void float32toInt24inPlace(float* buffer, long frames); - void float32toInt32inPlace(float* buffer, long frames); -}; - -#endif diff --git a/plugins/spu2ghz/asio/asio.cpp b/plugins/spu2ghz/asio/asio.cpp deleted file mode 100644 index 5c32d4f078..0000000000 --- a/plugins/spu2ghz/asio/asio.cpp +++ /dev/null @@ -1,257 +0,0 @@ -/* - Steinberg Audio Stream I/O API - (c) 1996, Steinberg Soft- und Hardware GmbH - - asio.cpp - - asio functions entries which translate the - asio interface to the asiodrvr class methods -*/ - -#include -#include "asiosys.h" // platform definition -#include "asio.h" - -#if MAC -#include "asiodrvr.h" - -#pragma export on - -AsioDriver *theAsioDriver = 0; - -extern "C" -{ - -long main() -{ - return 'ASIO'; -} - -#elif WINDOWS - -#include "windows.h" -#include "iasiodrv.h" -#include "asiodrivers.h" - -IASIO *theAsioDriver = 0; -//extern AsioDrivers *asioDrivers; - -#elif SGI || SUN || BEOS || LINUX -#include "asiodrvr.h" -static AsioDriver *theAsioDriver = 0; -#endif - -//----------------------------------------------------------------------------------------------------- -ASIOError ASIOInit(ASIODriverInfo *info) -{ -#if MAC || SGI || SUN || BEOS || LINUX - if(theAsioDriver) - { - delete theAsioDriver; - theAsioDriver = 0; - } - info->driverVersion = 0; - strcpy(info->name, "No ASIO Driver"); - theAsioDriver = getDriver(); - if(!theAsioDriver) - { - strcpy(info->errorMessage, "Not enough memory for the ASIO driver!"); - return ASE_NotPresent; - } - if(!theAsioDriver->init(info->sysRef)) - { - theAsioDriver->getErrorMessage(info->errorMessage); - delete theAsioDriver; - theAsioDriver = 0; - return ASE_NotPresent; - } - strcpy(info->errorMessage, "No ASIO Driver Error"); - theAsioDriver->getDriverName(info->name); - info->driverVersion = theAsioDriver->getDriverVersion(); - return ASE_OK; - -#else - - info->driverVersion = 0; - strcpy(info->name, "No ASIO Driver"); - if(theAsioDriver) // must be loaded! - { - if(!theAsioDriver->init(info->sysRef)) - { - theAsioDriver->getErrorMessage(info->errorMessage); - theAsioDriver = 0; - return ASE_NotPresent; - } - - strcpy(info->errorMessage, "No ASIO Driver Error"); - theAsioDriver->getDriverName(info->name); - info->driverVersion = theAsioDriver->getDriverVersion(); - return ASE_OK; - } - return ASE_NotPresent; - -#endif // !MAC -} - -ASIOError ASIOExit(void) -{ - if(theAsioDriver) - { -#if WINDOWS - //asioDrivers->removeCurrentDriver(); -#else - delete theAsioDriver; -#endif - } - theAsioDriver = 0; - return ASE_OK; -} - -ASIOError ASIOStart(void) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->start(); -} - -ASIOError ASIOStop(void) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->stop(); -} - -ASIOError ASIOGetChannels(long *numInputChannels, long *numOutputChannels) -{ - if(!theAsioDriver) - { - *numInputChannels = *numOutputChannels = 0; - return ASE_NotPresent; - } - return theAsioDriver->getChannels(numInputChannels, numOutputChannels); -} - -ASIOError ASIOGetLatencies(long *inputLatency, long *outputLatency) -{ - if(!theAsioDriver) - { - *inputLatency = *outputLatency = 0; - return ASE_NotPresent; - } - return theAsioDriver->getLatencies(inputLatency, outputLatency); -} - -ASIOError ASIOGetBufferSize(long *minSize, long *maxSize, long *preferredSize, long *granularity) -{ - if(!theAsioDriver) - { - *minSize = *maxSize = *preferredSize = *granularity = 0; - return ASE_NotPresent; - } - return theAsioDriver->getBufferSize(minSize, maxSize, preferredSize, granularity); -} - -ASIOError ASIOCanSampleRate(ASIOSampleRate sampleRate) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->canSampleRate(sampleRate); -} - -ASIOError ASIOGetSampleRate(ASIOSampleRate *currentRate) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->getSampleRate(currentRate); -} - -ASIOError ASIOSetSampleRate(ASIOSampleRate sampleRate) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->setSampleRate(sampleRate); -} - -ASIOError ASIOGetClockSources(ASIOClockSource *clocks, long *numSources) -{ - if(!theAsioDriver) - { - *numSources = 0; - return ASE_NotPresent; - } - return theAsioDriver->getClockSources(clocks, numSources); -} - -ASIOError ASIOSetClockSource(long reference) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->setClockSource(reference); -} - -ASIOError ASIOGetSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->getSamplePosition(sPos, tStamp); -} - -ASIOError ASIOGetChannelInfo(ASIOChannelInfo *info) -{ - if(!theAsioDriver) - { - info->channelGroup = -1; - info->type = ASIOSTInt16MSB; - strcpy(info->name, "None"); - return ASE_NotPresent; - } - return theAsioDriver->getChannelInfo(info); -} - -ASIOError ASIOCreateBuffers(ASIOBufferInfo *bufferInfos, long numChannels, - long bufferSize, ASIOCallbacks *callbacks) -{ - if(!theAsioDriver) - { - ASIOBufferInfo *info = bufferInfos; - for(long i = 0; i < numChannels; i++, info++) - info->buffers[0] = info->buffers[1] = 0; - return ASE_NotPresent; - } - return theAsioDriver->createBuffers(bufferInfos, numChannels, bufferSize, callbacks); -} - -ASIOError ASIODisposeBuffers(void) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->disposeBuffers(); -} - -ASIOError ASIOControlPanel(void) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->controlPanel(); -} - -ASIOError ASIOFuture(long selector, void *opt) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->future(selector, opt); -} - -ASIOError ASIOOutputReady(void) -{ - if(!theAsioDriver) - return ASE_NotPresent; - return theAsioDriver->outputReady(); -} - -#if MAC -} // extern "C" -#pragma export off -#endif - - diff --git a/plugins/spu2ghz/asio/asio.h b/plugins/spu2ghz/asio/asio.h deleted file mode 100644 index 67bbe05c35..0000000000 --- a/plugins/spu2ghz/asio/asio.h +++ /dev/null @@ -1,1057 +0,0 @@ -//--------------------------------------------------------------------------------------------------- -//--------------------------------------------------------------------------------------------------- - -/* - Steinberg Audio Stream I/O API - (c) 1997 - 2005, Steinberg Media Technologies GmbH - - ASIO Interface Specification v 2.1 - - 2005 - Added support for DSD sample data (in cooperation with Sony) - - - basic concept is an i/o synchronous double-buffer scheme: - - on bufferSwitch(index == 0), host will read/write: - - after ASIOStart(), the - read first input buffer A (index 0) - | will be invalid (empty) - * ------------------------ - |------------------------|-----------------------| - | | | - | Input Buffer A (0) | Input Buffer B (1) | - | | | - |------------------------|-----------------------| - | | | - | Output Buffer A (0) | Output Buffer B (1) | - | | | - |------------------------|-----------------------| - * ------------------------- - | before calling ASIOStart(), - write host will have filled output - buffer B (index 1) already - - *please* take special care of proper statement of input - and output latencies (see ASIOGetLatencies()), these - control sequencer sync accuracy - -*/ - -//--------------------------------------------------------------------------------------------------- -//--------------------------------------------------------------------------------------------------- - -/* - -prototypes summary: - -ASIOError ASIOInit(ASIODriverInfo *info); -ASIOError ASIOExit(void); -ASIOError ASIOStart(void); -ASIOError ASIOStop(void); -ASIOError ASIOGetChannels(long *numInputChannels, long *numOutputChannels); -ASIOError ASIOGetLatencies(long *inputLatency, long *outputLatency); -ASIOError ASIOGetBufferSize(long *minSize, long *maxSize, long *preferredSize, long *granularity); -ASIOError ASIOCanSampleRate(ASIOSampleRate sampleRate); -ASIOError ASIOGetSampleRate(ASIOSampleRate *currentRate); -ASIOError ASIOSetSampleRate(ASIOSampleRate sampleRate); -ASIOError ASIOGetClockSources(ASIOClockSource *clocks, long *numSources); -ASIOError ASIOSetClockSource(long reference); -ASIOError ASIOGetSamplePosition (ASIOSamples *sPos, ASIOTimeStamp *tStamp); -ASIOError ASIOGetChannelInfo(ASIOChannelInfo *info); -ASIOError ASIOCreateBuffers(ASIOBufferInfo *bufferInfos, long numChannels, - long bufferSize, ASIOCallbacks *callbacks); -ASIOError ASIODisposeBuffers(void); -ASIOError ASIOControlPanel(void); -void *ASIOFuture(long selector, void *params); -ASIOError ASIOOutputReady(void); - -*/ - -//--------------------------------------------------------------------------------------------------- -//--------------------------------------------------------------------------------------------------- - -#ifndef __ASIO_H -#define __ASIO_H - -// force 4 byte alignment -#if defined(_MSC_VER) && !defined(__MWERKS__) -#pragma pack(push,4) -#elif PRAGMA_ALIGN_SUPPORTED -#pragma options align = native -#endif - -//- - - - - - - - - - - - - - - - - - - - - - - - - -// Type definitions -//- - - - - - - - - - - - - - - - - - - - - - - - - - -// number of samples data type is 64 bit integer -#if NATIVE_INT64 - typedef long long int ASIOSamples; -#else - typedef struct ASIOSamples { - unsigned long hi; - unsigned long lo; - } ASIOSamples; -#endif - -// Timestamp data type is 64 bit integer, -// Time format is Nanoseconds. -#if NATIVE_INT64 - typedef long long int ASIOTimeStamp ; -#else - typedef struct ASIOTimeStamp { - unsigned long hi; - unsigned long lo; - } ASIOTimeStamp; -#endif - -// Samplerates are expressed in IEEE 754 64 bit double float, -// native format as host computer -#if IEEE754_64FLOAT - typedef double ASIOSampleRate; -#else - typedef struct ASIOSampleRate { - char ieee[8]; - } ASIOSampleRate; -#endif - -// Boolean values are expressed as long -typedef long ASIOBool; -enum - { - ASIOFalse = 0, - ASIOTrue = 1 -}; - -// Sample Types are expressed as long -typedef long ASIOSampleType; -enum - { - ASIOSTInt16MSB = 0, - ASIOSTInt24MSB = 1, // used for 20 bits as well - ASIOSTInt32MSB = 2, - ASIOSTFloat32MSB = 3, // IEEE 754 32 bit float - ASIOSTFloat64MSB = 4, // IEEE 754 64 bit double float - - // these are used for 32 bit data buffer, with different alignment of the data inside - // 32 bit PCI bus systems can be more easily used with these - ASIOSTInt32MSB16 = 8, // 32 bit data with 16 bit alignment - ASIOSTInt32MSB18 = 9, // 32 bit data with 18 bit alignment - ASIOSTInt32MSB20 = 10, // 32 bit data with 20 bit alignment - ASIOSTInt32MSB24 = 11, // 32 bit data with 24 bit alignment - - ASIOSTInt16LSB = 16, - ASIOSTInt24LSB = 17, // used for 20 bits as well - ASIOSTInt32LSB = 18, - ASIOSTFloat32LSB = 19, // IEEE 754 32 bit float, as found on Intel x86 architecture - ASIOSTFloat64LSB = 20, // IEEE 754 64 bit double float, as found on Intel x86 architecture - - // these are used for 32 bit data buffer, with different alignment of the data inside - // 32 bit PCI bus systems can more easily used with these - ASIOSTInt32LSB16 = 24, // 32 bit data with 18 bit alignment - ASIOSTInt32LSB18 = 25, // 32 bit data with 18 bit alignment - ASIOSTInt32LSB20 = 26, // 32 bit data with 20 bit alignment - ASIOSTInt32LSB24 = 27, // 32 bit data with 24 bit alignment - - // ASIO DSD format. - ASIOSTDSDInt8LSB1 = 32, // DSD 1 bit data, 8 samples per byte. First sample in Least significant bit. - ASIOSTDSDInt8MSB1 = 33, // DSD 1 bit data, 8 samples per byte. First sample in Most significant bit. - ASIOSTDSDInt8NER8 = 40, // DSD 8 bit data, 1 sample per byte. No Endianness required. - - ASIOSTLastEntry -}; - -/*----------------------------------------------------------------------------- -// DSD operation and buffer layout -// Definition by Steinberg/Sony Oxford. -// -// We have tried to treat DSD as PCM and so keep a consistant structure across -// the ASIO interface. -// -// DSD's sample rate is normally referenced as a multiple of 44.1Khz, so -// the standard sample rate is refered to as 64Fs (or 2.8224Mhz). We looked -// at making a special case for DSD and adding a field to the ASIOFuture that -// would allow the user to select the Over Sampleing Rate (OSR) as a seperate -// entity but decided in the end just to treat it as a simple value of -// 2.8224Mhz and use the standard interface to set it. -// -// The second problem was the "word" size, in PCM the word size is always a -// greater than or equal to 8 bits (a byte). This makes life easy as we can -// then pack the samples into the "natural" size for the machine. -// In DSD the "word" size is 1 bit. This is not a major problem and can easily -// be dealt with if we ensure that we always deal with a multiple of 8 samples. -// -// DSD brings with it another twist to the Endianness religion. How are the -// samples packed into the byte. It would be nice to just say the most significant -// bit is always the first sample, however there would then be a performance hit -// on little endian machines. Looking at how some of the processing goes... -// Little endian machines like the first sample to be in the Least Significant Bit, -// this is because when you write it to memory the data is in the correct format -// to be shifted in and out of the words. -// Big endian machine prefer the first sample to be in the Most Significant Bit, -// again for the same reasion. -// -// And just when things were looking really muddy there is a proposed extension to -// DSD that uses 8 bit word sizes. It does not care what endianness you use. -// -// Switching the driver between DSD and PCM mode -// ASIOFuture allows for extending the ASIO API quite transparently. -// See kAsioSetIoFormat, kAsioGetIoFormat, kAsioCanDoIoFormat -// -//-----------------------------------------------------------------------------*/ - - -//- - - - - - - - - - - - - - - - - - - - - - - - - -// Error codes -//- - - - - - - - - - - - - - - - - - - - - - - - - - -typedef long ASIOError; -enum - { - ASE_OK = 0, // This value will be returned whenever the call succeeded - ASE_SUCCESS = 0x3f4847a0, // unique success return value for ASIOFuture calls - ASE_NotPresent = -1000, // hardware input or output is not present or available - ASE_HWMalfunction, // hardware is malfunctioning (can be returned by any ASIO function) - ASE_InvalidParameter, // input parameter invalid - ASE_InvalidMode, // hardware is in a bad mode or used in a bad mode - ASE_SPNotAdvancing, // hardware is not running when sample position is inquired - ASE_NoClock, // sample clock or rate cannot be determined or is not present - ASE_NoMemory // not enough memory for completing the request -}; - -//--------------------------------------------------------------------------------------------------- -//--------------------------------------------------------------------------------------------------- - -//- - - - - - - - - - - - - - - - - - - - - - - - - -// Time Info support -//- - - - - - - - - - - - - - - - - - - - - - - - - - -typedef struct ASIOTimeCode -{ - double speed; // speed relation (fraction of nominal speed) - // optional; set to 0. or 1. if not supported - ASIOSamples timeCodeSamples; // time in samples - unsigned long flags; // some information flags (see below) - char future[64]; -} ASIOTimeCode; - -typedef enum ASIOTimeCodeFlags -{ - kTcValid = 1, - kTcRunning = 1 << 1, - kTcReverse = 1 << 2, - kTcOnspeed = 1 << 3, - kTcStill = 1 << 4, - - kTcSpeedValid = 1 << 8 -} ASIOTimeCodeFlags; - -typedef struct AsioTimeInfo -{ - double speed; // absolute speed (1. = nominal) - ASIOTimeStamp systemTime; // system time related to samplePosition, in nanoseconds - // on mac, must be derived from Microseconds() (not UpTime()!) - // on windows, must be derived from timeGetTime() - ASIOSamples samplePosition; - ASIOSampleRate sampleRate; // current rate - unsigned long flags; // (see below) - char reserved[12]; -} AsioTimeInfo; - -typedef enum AsioTimeInfoFlags -{ - kSystemTimeValid = 1, // must always be valid - kSamplePositionValid = 1 << 1, // must always be valid - kSampleRateValid = 1 << 2, - kSpeedValid = 1 << 3, - - kSampleRateChanged = 1 << 4, - kClockSourceChanged = 1 << 5 -} AsioTimeInfoFlags; - -typedef struct ASIOTime // both input/output -{ - long reserved[4]; // must be 0 - struct AsioTimeInfo timeInfo; // required - struct ASIOTimeCode timeCode; // optional, evaluated if (timeCode.flags & kTcValid) -} ASIOTime; - -/* - -using time info: -it is recommended to use the new method with time info even if the asio -device does not support timecode; continuous calls to ASIOGetSamplePosition -and ASIOGetSampleRate are avoided, and there is a more defined relationship -between callback time and the time info. - -see the example below. -to initiate time info mode, after you have received the callbacks pointer in -ASIOCreateBuffers, you will call the asioMessage callback with kAsioSupportsTimeInfo -as the argument. if this returns 1, host has accepted time info mode. -now host expects the new callback bufferSwitchTimeInfo to be used instead -of the old bufferSwitch method. the ASIOTime structure is assumed to be valid -and accessible until the callback returns. - -using time code: -if the device supports reading time code, it will call host's asioMessage callback -with kAsioSupportsTimeCode as the selector. it may then fill the according -fields and set the kTcValid flag. -host will call the future method with the kAsioEnableTimeCodeRead selector when -it wants to enable or disable tc reading by the device. you should also support -the kAsioCanTimeInfo and kAsioCanTimeCode selectors in ASIOFuture (see example). - -note: -the AsioTimeInfo/ASIOTimeCode pair is supposed to work in both directions. -as a matter of convention, the relationship between the sample -position counter and the time code at buffer switch time is -(ignoring offset between tc and sample pos when tc is running): - -on input: sample 0 -> input buffer sample 0 -> time code 0 -on output: sample 0 -> output buffer sample 0 -> time code 0 - -this means that for 'real' calculations, one has to take into account -the according latencies. - -example: - -ASIOTime asioTime; - -in createBuffers() -{ - memset(&asioTime, 0, sizeof(ASIOTime)); - AsioTimeInfo* ti = &asioTime.timeInfo; - ti->sampleRate = theSampleRate; - ASIOTimeCode* tc = &asioTime.timeCode; - tc->speed = 1.; - timeInfoMode = false; - canTimeCode = false; - if(callbacks->asioMessage(kAsioSupportsTimeInfo, 0, 0, 0) == 1) - { - timeInfoMode = true; -#if kCanTimeCode - if(callbacks->asioMessage(kAsioSupportsTimeCode, 0, 0, 0) == 1) - canTimeCode = true; -#endif - } -} - -void switchBuffers(long doubleBufferIndex, bool processNow) -{ - if(timeInfoMode) - { - AsioTimeInfo* ti = &asioTime.timeInfo; - ti->flags = kSystemTimeValid | kSamplePositionValid | kSampleRateValid; - ti->systemTime = theNanoSeconds; - ti->samplePosition = theSamplePosition; - if(ti->sampleRate != theSampleRate) - ti->flags |= kSampleRateChanged; - ti->sampleRate = theSampleRate; - -#if kCanTimeCode - if(canTimeCode && timeCodeEnabled) - { - ASIOTimeCode* tc = &asioTime.timeCode; - tc->timeCodeSamples = tcSamples; // tc in samples - tc->flags = kTcValid | kTcRunning | kTcOnspeed; // if so... - } - ASIOTime* bb = callbacks->bufferSwitchTimeInfo(&asioTime, doubleBufferIndex, processNow ? ASIOTrue : ASIOFalse); -#else - callbacks->bufferSwitchTimeInfo(&asioTime, doubleBufferIndex, processNow ? ASIOTrue : ASIOFalse); -#endif - } - else - callbacks->bufferSwitch(doubleBufferIndex, ASIOFalse); -} - -ASIOError ASIOFuture(long selector, void *params) -{ - switch(selector) - { - case kAsioEnableTimeCodeRead: - timeCodeEnabled = true; - return ASE_SUCCESS; - case kAsioDisableTimeCodeRead: - timeCodeEnabled = false; - return ASE_SUCCESS; - case kAsioCanTimeInfo: - return ASE_SUCCESS; - #if kCanTimeCode - case kAsioCanTimeCode: - return ASE_SUCCESS; - #endif - } - return ASE_NotPresent; -}; - -*/ - -//- - - - - - - - - - - - - - - - - - - - - - - - - -// application's audio stream handler callbacks -//- - - - - - - - - - - - - - - - - - - - - - - - - - -typedef struct ASIOCallbacks -{ - void (*bufferSwitch) (long doubleBufferIndex, ASIOBool directProcess); - // bufferSwitch indicates that both input and output are to be processed. - // the current buffer half index (0 for A, 1 for B) determines - // - the output buffer that the host should start to fill. the other buffer - // will be passed to output hardware regardless of whether it got filled - // in time or not. - // - the input buffer that is now filled with incoming data. Note that - // because of the synchronicity of i/o, the input always has at - // least one buffer latency in relation to the output. - // directProcess suggests to the host whether it should immedeately - // start processing (directProcess == ASIOTrue), or whether its process - // should be deferred because the call comes from a very low level - // (for instance, a high level priority interrupt), and direct processing - // would cause timing instabilities for the rest of the system. If in doubt, - // directProcess should be set to ASIOFalse. - // Note: bufferSwitch may be called at interrupt time for highest efficiency. - - void (*sampleRateDidChange) (ASIOSampleRate sRate); - // gets called when the AudioStreamIO detects a sample rate change - // If sample rate is unknown, 0 is passed (for instance, clock loss - // when externally synchronized). - - long (*asioMessage) (long selector, long value, void* message, double* opt); - // generic callback for various purposes, see selectors below. - // note this is only present if the asio version is 2 or higher - - ASIOTime* (*bufferSwitchTimeInfo) (ASIOTime* params, long doubleBufferIndex, ASIOBool directProcess); - // new callback with time info. makes ASIOGetSamplePosition() and various - // calls to ASIOGetSampleRate obsolete, - // and allows for timecode sync etc. to be preferred; will be used if - // the driver calls asioMessage with selector kAsioSupportsTimeInfo. -} ASIOCallbacks; - -// asioMessage selectors -enum -{ - kAsioSelectorSupported = 1, // selector in , returns 1L if supported, - // 0 otherwise - kAsioEngineVersion, // returns engine (host) asio implementation version, - // 2 or higher - kAsioResetRequest, // request driver reset. if accepted, this - // will close the driver (ASIO_Exit() ) and - // re-open it again (ASIO_Init() etc). some - // drivers need to reconfigure for instance - // when the sample rate changes, or some basic - // changes have been made in ASIO_ControlPanel(). - // returns 1L; note the request is merely passed - // to the application, there is no way to determine - // if it gets accepted at this time (but it usually - // will be). - kAsioBufferSizeChange, // not yet supported, will currently always return 0L. - // for now, use kAsioResetRequest instead. - // once implemented, the new buffer size is expected - // in , and on success returns 1L - kAsioResyncRequest, // the driver went out of sync, such that - // the timestamp is no longer valid. this - // is a request to re-start the engine and - // slave devices (sequencer). returns 1 for ok, - // 0 if not supported. - kAsioLatenciesChanged, // the drivers latencies have changed. The engine - // will refetch the latencies. - kAsioSupportsTimeInfo, // if host returns true here, it will expect the - // callback bufferSwitchTimeInfo to be called instead - // of bufferSwitch - kAsioSupportsTimeCode, // - kAsioMMCCommand, // unused - value: number of commands, message points to mmc commands - kAsioSupportsInputMonitor, // kAsioSupportsXXX return 1 if host supports this - kAsioSupportsInputGain, // unused and undefined - kAsioSupportsInputMeter, // unused and undefined - kAsioSupportsOutputGain, // unused and undefined - kAsioSupportsOutputMeter, // unused and undefined - kAsioOverload, // driver detected an overload - - kAsioNumMessageSelectors -}; - -//--------------------------------------------------------------------------------------------------- -//--------------------------------------------------------------------------------------------------- - -//- - - - - - - - - - - - - - - - - - - - - - - - - -// (De-)Construction -//- - - - - - - - - - - - - - - - - - - - - - - - - - -typedef struct ASIODriverInfo -{ - long asioVersion; // currently, 2 - long driverVersion; // driver specific - char name[32]; - char errorMessage[124]; - void *sysRef; // on input: system reference - // (Windows: application main window handle, Mac & SGI: 0) -} ASIODriverInfo; - -ASIOError ASIOInit(ASIODriverInfo *info); -/* Purpose: - Initialize the AudioStreamIO. - Parameter: - info: pointer to an ASIODriver structure: - - asioVersion: - - on input, the host version. *** Note *** this is 0 for earlier asio - implementations, and the asioMessage callback is implemeted - only if asioVersion is 2 or greater. sorry but due to a design fault - the driver doesn't have access to the host version in ASIOInit :-( - added selector for host (engine) version in the asioMessage callback - so we're ok from now on. - - on return, asio implementation version. - older versions are 1 - if you support this version (namely, ASIO_outputReady() ) - this should be 2 or higher. also see the note in - ASIO_getTimeStamp() ! - - version: on return, the driver version (format is driver specific) - - name: on return, a null-terminated string containing the driver's name - - error message: on return, should contain a user message describing - the type of error that occured during ASIOInit(), if any. - - sysRef: platform specific - Returns: - If neither input nor output is present ASE_NotPresent - will be returned. - ASE_NoMemory, ASE_HWMalfunction are other possible error conditions -*/ - -ASIOError ASIOExit(void); -/* Purpose: - Terminates the AudioStreamIO. - Parameter: - None. - Returns: - If neither input nor output is present ASE_NotPresent - will be returned. - Notes: this implies ASIOStop() and ASIODisposeBuffers(), - meaning that no host callbacks must be accessed after ASIOExit(). -*/ - -//- - - - - - - - - - - - - - - - - - - - - - - - - -// Start/Stop -//- - - - - - - - - - - - - - - - - - - - - - - - - - -ASIOError ASIOStart(void); -/* Purpose: - Start input and output processing synchronously. - This will - - reset the sample counter to zero - - start the hardware (both input and output) - The first call to the hosts' bufferSwitch(index == 0) then tells - the host to read from input buffer A (index 0), and start - processing to output buffer A while output buffer B (which - has been filled by the host prior to calling ASIOStart()) - is possibly sounding (see also ASIOGetLatencies()) - Parameter: - None. - Returns: - If neither input nor output is present, ASE_NotPresent - will be returned. - If the hardware fails to start, ASE_HWMalfunction will be returned. - Notes: - There is no restriction on the time that ASIOStart() takes - to perform (that is, it is not considered a realtime trigger). -*/ - -ASIOError ASIOStop(void); -/* Purpose: - Stops input and output processing altogether. - Parameter: - None. - Returns: - If neither input nor output is present ASE_NotPresent - will be returned. - Notes: - On return from ASIOStop(), the driver must in no - case call the hosts' bufferSwitch() routine. -*/ - -//- - - - - - - - - - - - - - - - - - - - - - - - - -// Inquiry methods and sample rate -//- - - - - - - - - - - - - - - - - - - - - - - - - - -ASIOError ASIOGetChannels(long *numInputChannels, long *numOutputChannels); -/* Purpose: - Returns number of individual input/output channels. - Parameter: - numInputChannels will hold the number of available input channels - numOutputChannels will hold the number of available output channels - Returns: - If no input/output is present ASE_NotPresent will be returned. - If only inputs, or only outputs are available, the according - other parameter will be zero, and ASE_OK is returned. -*/ - -ASIOError ASIOGetLatencies(long *inputLatency, long *outputLatency); -/* Purpose: - Returns the input and output latencies. This includes - device specific delays, like FIFOs etc. - Parameter: - inputLatency will hold the 'age' of the first sample frame - in the input buffer when the hosts reads it in bufferSwitch() - (this is theoretical, meaning it does not include the overhead - and delay between the actual physical switch, and the time - when bufferSitch() enters). - This will usually be the size of one block in sample frames, plus - device specific latencies. - - outputLatency will specify the time between the buffer switch, - and the time when the next play buffer will start to sound. - The next play buffer is defined as the one the host starts - processing after (or at) bufferSwitch(), indicated by the - index parameter (0 for buffer A, 1 for buffer B). - It will usually be either one block, if the host writes directly - to a dma buffer, or two or more blocks if the buffer is 'latched' by - the driver. As an example, on ASIOStart(), the host will have filled - the play buffer at index 1 already; when it gets the callback (with - the parameter index == 0), this tells it to read from the input - buffer 0, and start to fill the play buffer 0 (assuming that now - play buffer 1 is already sounding). In this case, the output - latency is one block. If the driver decides to copy buffer 1 - at that time, and pass it to the hardware at the next slot (which - is most commonly done, but should be avoided), the output latency - becomes two blocks instead, resulting in a total i/o latency of at least - 3 blocks. As memory access is the main bottleneck in native dsp processing, - and to acheive less latency, it is highly recommended to try to avoid - copying (this is also why the driver is the owner of the buffers). To - summarize, the minimum i/o latency can be acheived if the input buffer - is processed by the host into the output buffer which will physically - start to sound on the next time slice. Also note that the host expects - the bufferSwitch() callback to be accessed for each time slice in order - to retain sync, possibly recursively; if it fails to process a block in - time, it will suspend its operation for some time in order to recover. - Returns: - If no input/output is present ASE_NotPresent will be returned. -*/ - -ASIOError ASIOGetBufferSize(long *minSize, long *maxSize, long *preferredSize, long *granularity); -/* Purpose: - Returns min, max, and preferred buffer sizes for input/output - Parameter: - minSize will hold the minimum buffer size - maxSize will hold the maxium possible buffer size - preferredSize will hold the preferred buffer size (a size which - best fits performance and hardware requirements) - granularity will hold the granularity at which buffer sizes - may differ. Usually, the buffer size will be a power of 2; - in this case, granularity will hold -1 on return, signalling - possible buffer sizes starting from minSize, increased in - powers of 2 up to maxSize. - Returns: - If no input/output is present ASE_NotPresent will be returned. - Notes: - When minimum and maximum buffer size are equal, - the preferred buffer size has to be the same value as well; granularity - should be 0 in this case. -*/ - -ASIOError ASIOCanSampleRate(ASIOSampleRate sampleRate); -/* Purpose: - Inquires the hardware for the available sample rates. - Parameter: - sampleRate is the rate in question. - Returns: - If the inquired sample rate is not supported, ASE_NoClock will be returned. - If no input/output is present ASE_NotPresent will be returned. -*/ -ASIOError ASIOGetSampleRate(ASIOSampleRate *currentRate); -/* Purpose: - Get the current sample Rate. - Parameter: - currentRate will hold the current sample rate on return. - Returns: - If sample rate is unknown, sampleRate will be 0 and ASE_NoClock will be returned. - If no input/output is present ASE_NotPresent will be returned. - Notes: -*/ - -ASIOError ASIOSetSampleRate(ASIOSampleRate sampleRate); -/* Purpose: - Set the hardware to the requested sample Rate. If sampleRate == 0, - enable external sync. - Parameter: - sampleRate: on input, the requested rate - Returns: - If sampleRate is unknown ASE_NoClock will be returned. - If the current clock is external, and sampleRate is != 0, - ASE_InvalidMode will be returned - If no input/output is present ASE_NotPresent will be returned. - Notes: -*/ - -typedef struct ASIOClockSource -{ - long index; // as used for ASIOSetClockSource() - long associatedChannel; // for instance, S/PDIF or AES/EBU - long associatedGroup; // see channel groups (ASIOGetChannelInfo()) - ASIOBool isCurrentSource; // ASIOTrue if this is the current clock source - char name[32]; // for user selection -} ASIOClockSource; - -ASIOError ASIOGetClockSources(ASIOClockSource *clocks, long *numSources); -/* Purpose: - Get the available external audio clock sources - Parameter: - clocks points to an array of ASIOClockSource structures: - - index: this is used to identify the clock source - when ASIOSetClockSource() is accessed, should be - an index counting from zero - - associatedInputChannel: the first channel of an associated - input group, if any. - - associatedGroup: the group index of that channel. - groups of channels are defined to seperate for - instance analog, S/PDIF, AES/EBU, ADAT connectors etc, - when present simultaniously. Note that associated channel - is enumerated according to numInputs/numOutputs, means it - is independant from a group (see also ASIOGetChannelInfo()) - inputs are associated to a clock if the physical connection - transfers both data and clock (like S/PDIF, AES/EBU, or - ADAT inputs). if there is no input channel associated with - the clock source (like Word Clock, or internal oscillator), both - associatedChannel and associatedGroup should be set to -1. - - isCurrentSource: on exit, ASIOTrue if this is the current clock - source, ASIOFalse else - - name: a null-terminated string for user selection of the available sources. - numSources: - on input: the number of allocated array members - on output: the number of available clock sources, at least - 1 (internal clock generator). - Returns: - If no input/output is present ASE_NotPresent will be returned. - Notes: -*/ - -ASIOError ASIOSetClockSource(long index); -/* Purpose: - Set the audio clock source - Parameter: - index as obtained from an inquiry to ASIOGetClockSources() - Returns: - If no input/output is present ASE_NotPresent will be returned. - If the clock can not be selected because an input channel which - carries the current clock source is active, ASE_InvalidMode - *may* be returned (this depends on the properties of the driver - and/or hardware). - Notes: - Should *not* return ASE_NoClock if there is no clock signal present - at the selected source; this will be inquired via ASIOGetSampleRate(). - It should call the host callback procedure sampleRateHasChanged(), - if the switch causes a sample rate change, or if no external clock - is present at the selected source. -*/ - -ASIOError ASIOGetSamplePosition (ASIOSamples *sPos, ASIOTimeStamp *tStamp); -/* Purpose: - Inquires the sample position/time stamp pair. - Parameter: - sPos will hold the sample position on return. The sample - position is reset to zero when ASIOStart() gets called. - tStamp will hold the system time when the sample position - was latched. - Returns: - If no input/output is present, ASE_NotPresent will be returned. - If there is no clock, ASE_SPNotAdvancing will be returned. - Notes: - - in order to be able to synchronise properly, - the sample position / time stamp pair must refer to the current block, - that is, the engine will call ASIOGetSamplePosition() in its bufferSwitch() - callback and expect the time for the current block. thus, when requested - in the very first bufferSwitch after ASIO_Start(), the sample position - should be zero, and the time stamp should refer to the very time where - the stream was started. it also means that the sample position must be - block aligned. the driver must ensure proper interpolation if the system - time can not be determined for the block position. the driver is responsible - for precise time stamps as it usually has most direct access to lower - level resources. proper behaviour of ASIO_GetSamplePosition() and ASIO_GetLatencies() - are essential for precise media synchronization! -*/ - -typedef struct ASIOChannelInfo -{ - long channel; // on input, channel index - ASIOBool isInput; // on input - ASIOBool isActive; // on exit - long channelGroup; // dto - ASIOSampleType type; // dto - char name[32]; // dto -} ASIOChannelInfo; - -ASIOError ASIOGetChannelInfo(ASIOChannelInfo *info); -/* Purpose: - retreive information about the nature of a channel - Parameter: - info: pointer to a ASIOChannelInfo structure with - - channel: on input, the channel index of the channel in question. - - isInput: on input, ASIOTrue if info for an input channel is - requested, else output - - channelGroup: on return, the channel group that the channel - belongs to. For drivers which support different types of - channels, like analog, S/PDIF, AES/EBU, ADAT etc interfaces, - there should be a reasonable grouping of these types. Groups - are always independant form a channel index, that is, a channel - index always counts from 0 to numInputs/numOutputs regardless - of the group it may belong to. - There will always be at least one group (group 0). Please - also note that by default, the host may decide to activate - channels 0 and 1; thus, these should belong to the most - useful type (analog i/o, if present). - - type: on return, contains the sample type of the channel - - isActive: on return, ASIOTrue if channel is active as it was - installed by ASIOCreateBuffers(), ASIOFalse else - - name: describing the type of channel in question. Used to allow - for user selection, and enabling of specific channels. examples: - "Analog In", "SPDIF Out" etc - Returns: - If no input/output is present ASE_NotPresent will be returned. - Notes: - If possible, the string should be organised such that the first - characters are most significantly describing the nature of the - port, to allow for identification even if the view showing the - port name is too small to display more than 8 characters, for - instance. -*/ - -//- - - - - - - - - - - - - - - - - - - - - - - - - -// Buffer preparation -//- - - - - - - - - - - - - - - - - - - - - - - - - - -typedef struct ASIOBufferInfo -{ - ASIOBool isInput; // on input: ASIOTrue: input, else output - long channelNum; // on input: channel index - void *buffers[2]; // on output: double buffer addresses -} ASIOBufferInfo; - -ASIOError ASIOCreateBuffers(ASIOBufferInfo *bufferInfos, long numChannels, - long bufferSize, ASIOCallbacks *callbacks); - -/* Purpose: - Allocates input/output buffers for all input and output channels to be activated. - Parameter: - bufferInfos is a pointer to an array of ASIOBufferInfo structures: - - isInput: on input, ASIOTrue if the buffer is to be allocated - for an input, output buffer else - - channelNum: on input, the index of the channel in question - (counting from 0) - - buffers: on exit, 2 pointers to the halves of the channels' double-buffer. - the size of the buffer(s) of course depend on both the ASIOSampleType - as obtained from ASIOGetChannelInfo(), and bufferSize - numChannels is the sum of all input and output channels to be created; - thus bufferInfos is a pointer to an array of numChannels ASIOBufferInfo - structures. - bufferSize selects one of the possible buffer sizes as obtained from - ASIOGetBufferSizes(). - callbacks is a pointer to an ASIOCallbacks structure. - Returns: - If not enough memory is available ASE_NoMemory will be returned. - If no input/output is present ASE_NotPresent will be returned. - If bufferSize is not supported, or one or more of the bufferInfos elements - contain invalid settings, ASE_InvalidMode will be returned. - Notes: - If individual channel selection is not possible but requested, - the driver has to handle this. namely, bufferSwitch() will only - have filled buffers of enabled outputs. If possible, processing - and buss activities overhead should be avoided for channels which - were not enabled here. -*/ - -ASIOError ASIODisposeBuffers(void); -/* Purpose: - Releases all buffers for the device. - Parameter: - None. - Returns: - If no buffer were ever prepared, ASE_InvalidMode will be returned. - If no input/output is present ASE_NotPresent will be returned. - Notes: - This implies ASIOStop(). -*/ - -ASIOError ASIOControlPanel(void); -/* Purpose: - request the driver to start a control panel component - for device specific user settings. This will not be - accessed on some platforms (where the component is accessed - instead). - Parameter: - None. - Returns: - If no panel is available ASE_NotPresent will be returned. - Actually, the return code is ignored. - Notes: - if the user applied settings which require a re-configuration - of parts or all of the enigine and/or driver (such as a change of - the block size), the asioMessage callback can be used (see - ASIO_Callbacks). -*/ - -ASIOError ASIOFuture(long selector, void *params); -/* Purpose: - various - Parameter: - selector: operation Code as to be defined. zero is reserved for - testing purposes. - params: depends on the selector; usually pointer to a structure - for passing and retreiving any type and amount of parameters. - Returns: - the return value is also selector dependant. if the selector - is unknown, ASE_InvalidParameter should be returned to prevent - further calls with this selector. on success, ASE_SUCCESS - must be returned (note: ASE_OK is *not* sufficient!) - Notes: - see selectors defined below. -*/ - -enum -{ - kAsioEnableTimeCodeRead = 1, // no arguments - kAsioDisableTimeCodeRead, // no arguments - kAsioSetInputMonitor, // ASIOInputMonitor* in params - kAsioTransport, // ASIOTransportParameters* in params - kAsioSetInputGain, // ASIOChannelControls* in params, apply gain - kAsioGetInputMeter, // ASIOChannelControls* in params, fill meter - kAsioSetOutputGain, // ASIOChannelControls* in params, apply gain - kAsioGetOutputMeter, // ASIOChannelControls* in params, fill meter - kAsioCanInputMonitor, // no arguments for kAsioCanXXX selectors - kAsioCanTimeInfo, - kAsioCanTimeCode, - kAsioCanTransport, - kAsioCanInputGain, - kAsioCanInputMeter, - kAsioCanOutputGain, - kAsioCanOutputMeter, - - // DSD support - // The following extensions are required to allow switching - // and control of the DSD subsystem. - kAsioSetIoFormat = 0x23111961, /* ASIOIoFormat * in params. */ - kAsioGetIoFormat = 0x23111983, /* ASIOIoFormat * in params. */ - kAsioCanDoIoFormat = 0x23112004, /* ASIOIoFormat * in params. */ -}; - -typedef struct ASIOInputMonitor -{ - long input; // this input was set to monitor (or off), -1: all - long output; // suggested output for monitoring the input (if so) - long gain; // suggested gain, ranging 0 - 0x7fffffffL (-inf to +12 dB) - ASIOBool state; // ASIOTrue => on, ASIOFalse => off - long pan; // suggested pan, 0 => all left, 0x7fffffff => right -} ASIOInputMonitor; - -typedef struct ASIOChannelControls -{ - long channel; // on input, channel index - ASIOBool isInput; // on input - long gain; // on input, ranges 0 thru 0x7fffffff - long meter; // on return, ranges 0 thru 0x7fffffff - char future[32]; -} ASIOChannelControls; - -typedef struct ASIOTransportParameters -{ - long command; // see enum below - ASIOSamples samplePosition; - long track; - long trackSwitches[16]; // 512 tracks on/off - char future[64]; -} ASIOTransportParameters; - -enum -{ - kTransStart = 1, - kTransStop, - kTransLocate, // to samplePosition - kTransPunchIn, - kTransPunchOut, - kTransArmOn, // track - kTransArmOff, // track - kTransMonitorOn, // track - kTransMonitorOff, // track - kTransArm, // trackSwitches - kTransMonitor // trackSwitches -}; - -/* -// DSD support -// Some notes on how to use ASIOIoFormatType. -// -// The caller will fill the format with the request types. -// If the board can do the request then it will leave the -// values unchanged. If the board does not support the -// request then it will change that entry to Invalid (-1) -// -// So to request DSD then -// -// ASIOIoFormat NeedThis={kASIODSDFormat}; -// -// if(ASE_SUCCESS != ASIOFuture(kAsioSetIoFormat,&NeedThis) ){ -// // If the board did not accept one of the parameters then the -// // whole call will fail and the failing parameter will -// // have had its value changes to -1. -// } -// -// Note: Switching between the formats need to be done before the "prepared" -// state (see ASIO 2 documentation) is entered. -*/ -typedef long int ASIOIoFormatType; -enum ASIOIoFormatType_e -{ - kASIOFormatInvalid = -1, - kASIOPCMFormat = 0, - kASIODSDFormat = 1, -}; - -typedef struct ASIOIoFormat_s -{ - ASIOIoFormatType FormatType; - char future[512-sizeof(ASIOIoFormatType)]; -} ASIOIoFormat; - - -ASIOError ASIOOutputReady(void); -/* Purpose: - this tells the driver that the host has completed processing - the output buffers. if the data format required by the hardware - differs from the supported asio formats, but the hardware - buffers are DMA buffers, the driver will have to convert - the audio stream data; as the bufferSwitch callback is - usually issued at dma block switch time, the driver will - have to convert the *previous* host buffer, which increases - the output latency by one block. - when the host finds out that ASIOOutputReady() returns - true, it will issue this call whenever it completed - output processing. then the driver can convert the - host data directly to the dma buffer to be played next, - reducing output latency by one block. - another way to look at it is, that the buffer switch is called - in order to pass the *input* stream to the host, so that it can - process the input into the output, and the output stream is passed - to the driver when the host has completed its process. - Parameter: - None - Returns: - only if the above mentioned scenario is given, and a reduction - of output latency can be acheived by this mechanism, should - ASE_OK be returned. otherwise (and usually), ASE_NotPresent - should be returned in order to prevent further calls to this - function. note that the host may want to determine if it is - to use this when the system is not yet fully initialized, so - ASE_OK should always be returned if the mechanism makes sense. - Notes: - please remeber to adjust ASIOGetLatencies() according to - whether ASIOOutputReady() was ever called or not, if your - driver supports this scenario. - also note that the engine may fail to call ASIO_OutputReady() - in time in overload cases. as already mentioned, bufferSwitch - should be called for every block regardless of whether a block - could be processed in time. -*/ - -// restore old alignment -#if defined(_MSC_VER) && !defined(__MWERKS__) -#pragma pack(pop) -#elif PRAGMA_ALIGN_SUPPORTED -#pragma options align = reset -#endif - -#endif - diff --git a/plugins/spu2ghz/asio/asiodrivers.cpp b/plugins/spu2ghz/asio/asiodrivers.cpp deleted file mode 100644 index 840b4e33c5..0000000000 --- a/plugins/spu2ghz/asio/asiodrivers.cpp +++ /dev/null @@ -1,173 +0,0 @@ -#include -#include "asiodrivers.h" - -//------------------------------------------------------------------------------------ - -#if MAC - -bool resolveASIO(unsigned long aconnID); - -AsioDrivers::AsioDrivers() : CodeFragments("ASIO Drivers", 'AsDr', 'Asio') -{ - connID = -1; - curIndex = -1; -} - -AsioDrivers::~AsioDrivers() -{ - removeCurrentDriver(); -} - -bool AsioDrivers::getCurrentDriverName(char *name) -{ - if(curIndex >= 0) - return getName(curIndex, name); - return false; -} - -long AsioDrivers::getDriverNames(char **names, long maxDrivers) -{ - for(long i = 0; i < getNumFragments() && i < maxDrivers; i++) - getName(i, names[i]); - return getNumFragments() < maxDrivers ? getNumFragments() : maxDrivers; -} - -bool AsioDrivers::loadDriver(char *name) -{ - char dname[64]; - unsigned long newID; - - for(long i = 0; i < getNumFragments(); i++) - { - if(getName(i, dname) && !strcmp(name, dname)) - { - if(newInstance(i, &newID)) - { - if(resolveASIO(newID)) - { - if(connID != -1) - removeInstance(curIndex, connID); - curIndex = i; - connID = newID; - return true; - } - } - break; - } - } - return false; -} - -void AsioDrivers::removeCurrentDriver() -{ - if(connID != -1) - removeInstance(curIndex, connID); - connID = -1; - curIndex = -1; -} - -//------------------------------------------------------------------------------------ - -#elif WINDOWS - -#include "iasiodrv.h" - -extern IASIO* theAsioDriver; - -AsioDrivers::AsioDrivers() : AsioDriverList() -{ - curIndex = -1; -} - -AsioDrivers::~AsioDrivers() -{ -} - -bool AsioDrivers::getCurrentDriverName(char *name) -{ - if(curIndex >= 0) - return asioGetDriverName(curIndex, name, 32) == 0 ? true : false; - name[0] = 0; - return false; -} - -long AsioDrivers::getDriverNames(char **names, long maxDrivers) -{ - for(long i = 0; i < asioGetNumDev() && i < maxDrivers; i++) - asioGetDriverName(i, names[i], 32); - return asioGetNumDev() < maxDrivers ? asioGetNumDev() : maxDrivers; -} - -bool AsioDrivers::loadDriver(char *name) -{ - char dname[64]; - char curName[64]; - - for(long i = 0; i < asioGetNumDev(); i++) - { - if(!asioGetDriverName(i, dname, 32) && !strcmp(name, dname)) - { - curName[0] = 0; - getCurrentDriverName(curName); // in case we fail... - removeCurrentDriver(); - - if(!asioOpenDriver(i, (void **)&theAsioDriver)) - { - curIndex = i; - return true; - } - else - { - theAsioDriver = 0; - if(curName[0] && strcmp(dname, curName)) - loadDriver(curName); // try restore - } - break; - } - } - return false; -} - -void AsioDrivers::removeCurrentDriver() -{ - if(curIndex != -1) - asioCloseDriver(curIndex); - curIndex = -1; -} - -#elif SGI || BEOS - -#include "asiolist.h" - -AsioDrivers::AsioDrivers() - : AsioDriverList() -{ - curIndex = -1; -} - -AsioDrivers::~AsioDrivers() -{ -} - -bool AsioDrivers::getCurrentDriverName(char *name) -{ - return false; -} - -long AsioDrivers::getDriverNames(char **names, long maxDrivers) -{ - return 0; -} - -bool AsioDrivers::loadDriver(char *name) -{ - return false; -} - -void AsioDrivers::removeCurrentDriver() -{ -} - -#else -#error implement me -#endif diff --git a/plugins/spu2ghz/asio/asiodrivers.h b/plugins/spu2ghz/asio/asiodrivers.h deleted file mode 100644 index 511f2ea458..0000000000 --- a/plugins/spu2ghz/asio/asiodrivers.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef __AsioDrivers__ -#define __AsioDrivers__ - -#include "ginclude.h" - -#if MAC -#include "CodeFragments.hpp" - -class AsioDrivers : public CodeFragments - -#elif WINDOWS -#include -#include "asiolist.h" - -class AsioDrivers : public AsioDriverList - -#elif SGI || BEOS -#include "asiolist.h" - -class AsioDrivers : public AsioDriverList - -#else -#error implement me -#endif - -{ -public: - AsioDrivers(); - ~AsioDrivers(); - - bool getCurrentDriverName(char *name); - long getDriverNames(char **names, long maxDrivers); - bool loadDriver(char *name); - void removeCurrentDriver(); - long getCurrentDriverIndex() {return curIndex;} -protected: - unsigned long connID; - long curIndex; -}; - -#endif diff --git a/plugins/spu2ghz/asio/asiodrvr.cpp b/plugins/spu2ghz/asio/asiodrvr.cpp deleted file mode 100644 index 6ada6f635a..0000000000 --- a/plugins/spu2ghz/asio/asiodrvr.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - Steinberg Audio Stream I/O API - (c) 1996, Steinberg Soft- und Hardware GmbH - charlie (May 1996) - - asiodrvr.cpp - c++ superclass to implement asio functionality. from this, - you can derive whatever required -*/ - -#include -#include "asiosys.h" -#include "asiodrvr.h" - -#if WINDOWS -#error do not use this -AsioDriver::AsioDriver (LPUNKNOWN pUnk, HRESULT *phr) : CUnknown("My AsioDriver", pUnk, phr) -{ -} - -#else - -AsioDriver::AsioDriver() -{ -} - -#endif - -AsioDriver::~AsioDriver() -{ -} - -ASIOBool AsioDriver::init(void *sysRef) -{ - return ASE_NotPresent; -} - -void AsioDriver::getDriverName(char *name) -{ - strcpy(name, "No Driver"); -} - -long AsioDriver::getDriverVersion() -{ - return 0; -} - -void AsioDriver::getErrorMessage(char *string) -{ - strcpy(string, "ASIO Driver Implementation Error!"); -} - -ASIOError AsioDriver::start() -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::stop() -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::getChannels(long *numInputChannels, long *numOutputChannels) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::getLatencies(long *inputLatency, long *outputLatency) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::getBufferSize(long *minSize, long *maxSize, - long *preferredSize, long *granularity) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::canSampleRate(ASIOSampleRate sampleRate) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::getSampleRate(ASIOSampleRate *sampleRate) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::setSampleRate(ASIOSampleRate sampleRate) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::getClockSources(ASIOClockSource *clocks, long *numSources) -{ - *numSources = 0; - return ASE_NotPresent; -} - -ASIOError AsioDriver::setClockSource(long reference) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::getSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::getChannelInfo(ASIOChannelInfo *info) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::createBuffers(ASIOBufferInfo *channelInfos, long numChannels, - long bufferSize, ASIOCallbacks *callbacks) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::disposeBuffers() -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::controlPanel() -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::future(long selector, void *opt) -{ - return ASE_NotPresent; -} - -ASIOError AsioDriver::outputReady() -{ - return ASE_NotPresent; -} \ No newline at end of file diff --git a/plugins/spu2ghz/asio/asiodrvr.h b/plugins/spu2ghz/asio/asiodrvr.h deleted file mode 100644 index 1670dfac68..0000000000 --- a/plugins/spu2ghz/asio/asiodrvr.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - Steinberg Audio Stream I/O API - (c) 1996, Steinberg Soft- und Hardware GmbH - charlie (May 1996) - - asiodrvr.h - c++ superclass to implement asio functionality. from this, - you can derive whatever required -*/ - -#ifndef _asiodrvr_ -#define _asiodrvr_ - -// cpu and os system we are running on -#include "asiosys.h" -// basic "C" interface -#include "asio.h" - -class AsioDriver; -extern AsioDriver *getDriver(); // for generic constructor - -#if WINDOWS -#include -#include "combase.h" -#include "iasiodrv.h" -class AsioDriver : public IASIO ,public CUnknown -{ -public: - AsioDriver(LPUNKNOWN pUnk, HRESULT *phr); - - DECLARE_IUNKNOWN - // Factory method - static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr); - // IUnknown - virtual HRESULT STDMETHODCALLTYPE NonDelegatingQueryInterface(REFIID riid,void **ppvObject); - -#else - -class AsioDriver -{ -public: - AsioDriver(); -#endif - virtual ~AsioDriver(); - - virtual ASIOBool init(void* sysRef); - virtual void getDriverName(char *name); // max 32 bytes incl. terminating zero - virtual long getDriverVersion(); - virtual void getErrorMessage(char *string); // max 124 bytes incl. - - virtual ASIOError start(); - virtual ASIOError stop(); - - virtual ASIOError getChannels(long *numInputChannels, long *numOutputChannels); - virtual ASIOError getLatencies(long *inputLatency, long *outputLatency); - virtual ASIOError getBufferSize(long *minSize, long *maxSize, - long *preferredSize, long *granularity); - - virtual ASIOError canSampleRate(ASIOSampleRate sampleRate); - virtual ASIOError getSampleRate(ASIOSampleRate *sampleRate); - virtual ASIOError setSampleRate(ASIOSampleRate sampleRate); - virtual ASIOError getClockSources(ASIOClockSource *clocks, long *numSources); - virtual ASIOError setClockSource(long reference); - - virtual ASIOError getSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp); - virtual ASIOError getChannelInfo(ASIOChannelInfo *info); - - virtual ASIOError createBuffers(ASIOBufferInfo *bufferInfos, long numChannels, - long bufferSize, ASIOCallbacks *callbacks); - virtual ASIOError disposeBuffers(); - - virtual ASIOError controlPanel(); - virtual ASIOError future(long selector, void *opt); - virtual ASIOError outputReady(); -}; -#endif diff --git a/plugins/spu2ghz/asio/asiolist.cpp b/plugins/spu2ghz/asio/asiolist.cpp deleted file mode 100644 index 57dedffe40..0000000000 --- a/plugins/spu2ghz/asio/asiolist.cpp +++ /dev/null @@ -1,268 +0,0 @@ -#include -#include "iasiodrv.h" -#include "asiolist.h" - -#define ASIODRV_DESC "description" -#define INPROC_SERVER "InprocServer32" -#define ASIO_PATH "software\\asio" -#define COM_CLSID "clsid" - -// ****************************************************************** -// Local Functions -// ****************************************************************** -static LONG findDrvPath (char *clsidstr,char *dllpath,int dllpathsize) -{ - HKEY hkEnum,hksub,hkpath; - char databuf[512]; - LONG cr,rc = -1; - DWORD datatype,datasize; - DWORD index; - OFSTRUCT ofs; - HFILE hfile; - BOOL found = FALSE; - - CharLowerBuff(clsidstr,strlen(clsidstr)); - if ((cr = RegOpenKey(HKEY_CLASSES_ROOT,COM_CLSID,&hkEnum)) == ERROR_SUCCESS) { - - index = 0; - while (cr == ERROR_SUCCESS && !found) { - cr = RegEnumKey(hkEnum,index++,(LPTSTR)databuf,512); - if (cr == ERROR_SUCCESS) { - CharLowerBuff(databuf,strlen(databuf)); - if (!(strcmp(databuf,clsidstr))) { - if ((cr = RegOpenKeyEx(hkEnum,(LPCTSTR)databuf,0,KEY_READ,&hksub)) == ERROR_SUCCESS) { - if ((cr = RegOpenKeyEx(hksub,(LPCTSTR)INPROC_SERVER,0,KEY_READ,&hkpath)) == ERROR_SUCCESS) { - datatype = REG_SZ; datasize = (DWORD)dllpathsize; - cr = RegQueryValueEx(hkpath,0,0,&datatype,(LPBYTE)dllpath,&datasize); - if (cr == ERROR_SUCCESS) { - memset(&ofs,0,sizeof(OFSTRUCT)); - ofs.cBytes = sizeof(OFSTRUCT); - hfile = OpenFile(dllpath,&ofs,OF_EXIST); - if (hfile) rc = 0; - } - RegCloseKey(hkpath); - } - RegCloseKey(hksub); - } - found = TRUE; // break out - } - } - } - RegCloseKey(hkEnum); - } - return rc; -} - - -static LPASIODRVSTRUCT newDrvStruct (HKEY hkey,char *keyname,int drvID,LPASIODRVSTRUCT lpdrv) -{ - HKEY hksub; - char databuf[256]; - char dllpath[MAXPATHLEN]; - WORD wData[100]; - CLSID clsid; - DWORD datatype,datasize; - LONG cr,rc; - - if (!lpdrv) { - if ((cr = RegOpenKeyEx(hkey,(LPCTSTR)keyname,0,KEY_READ,&hksub)) == ERROR_SUCCESS) { - - datatype = REG_SZ; datasize = 256; - cr = RegQueryValueEx(hksub,COM_CLSID,0,&datatype,(LPBYTE)databuf,&datasize); - if (cr == ERROR_SUCCESS) { - rc = findDrvPath (databuf,dllpath,MAXPATHLEN); - if (rc == 0) { - lpdrv = new ASIODRVSTRUCT[1]; - if (lpdrv) { - memset(lpdrv,0,sizeof(ASIODRVSTRUCT)); - lpdrv->drvID = drvID; - MultiByteToWideChar(CP_ACP,0,(LPCSTR)databuf,-1,(LPWSTR)wData,100); - if ((cr = CLSIDFromString((LPOLESTR)wData,(LPCLSID)&clsid)) == S_OK) { - memcpy(&lpdrv->clsid,&clsid,sizeof(CLSID)); - } - - datatype = REG_SZ; datasize = 256; - cr = RegQueryValueEx(hksub,ASIODRV_DESC,0,&datatype,(LPBYTE)databuf,&datasize); - if (cr == ERROR_SUCCESS) { - strncpy(lpdrv->drvname,databuf,127); - } - else strcpy(lpdrv->drvname,keyname); - } - } - } - RegCloseKey(hksub); - } - } - else lpdrv->next = newDrvStruct(hkey,keyname,drvID+1,lpdrv->next); - - return lpdrv; -} - -static void deleteDrvStruct (LPASIODRVSTRUCT lpdrv) -{ - IASIO *iasio; - - if (lpdrv != 0) { - deleteDrvStruct(lpdrv->next); - if (lpdrv->asiodrv) { - iasio = (IASIO *)lpdrv->asiodrv; - iasio->Release(); - } - delete lpdrv; - } -} - - -static LPASIODRVSTRUCT getDrvStruct (int drvID,LPASIODRVSTRUCT lpdrv) -{ - while (lpdrv) { - if (lpdrv->drvID == drvID) return lpdrv; - lpdrv = lpdrv->next; - } - return 0; -} -// ****************************************************************** - - -// ****************************************************************** -// AsioDriverList -// ****************************************************************** -AsioDriverList::AsioDriverList () -{ - HKEY hkEnum = 0; - char keyname[MAXDRVNAMELEN]; - LPASIODRVSTRUCT pdl; - LONG cr; - DWORD index = 0; - BOOL fin = FALSE; - - numdrv = 0; - lpdrvlist = 0; - - cr = RegOpenKey(HKEY_LOCAL_MACHINE,ASIO_PATH,&hkEnum); - while (cr == ERROR_SUCCESS) { - if ((cr = RegEnumKey(hkEnum,index++,(LPTSTR)keyname,MAXDRVNAMELEN))== ERROR_SUCCESS) { - lpdrvlist = newDrvStruct (hkEnum,keyname,0,lpdrvlist); - } - else fin = TRUE; - } - if (hkEnum) RegCloseKey(hkEnum); - - pdl = lpdrvlist; - while (pdl) { - numdrv++; - pdl = pdl->next; - } - - if (numdrv) CoInitialize(0); // initialize COM -} - -AsioDriverList::~AsioDriverList () -{ - if (numdrv) { - deleteDrvStruct(lpdrvlist); - CoUninitialize(); - } -} - - -LONG AsioDriverList::asioGetNumDev (VOID) -{ - return (LONG)numdrv; -} - - -LONG AsioDriverList::asioOpenDriver (int drvID,LPVOID *asiodrv) -{ - LPASIODRVSTRUCT lpdrv = 0; - long rc; - - if (!asiodrv) return DRVERR_INVALID_PARAM; - - if ((lpdrv = getDrvStruct(drvID,lpdrvlist)) != 0) { - if (!lpdrv->asiodrv) { - rc = CoCreateInstance(lpdrv->clsid,0,CLSCTX_INPROC_SERVER,lpdrv->clsid,asiodrv); - if (rc == S_OK) { - lpdrv->asiodrv = *asiodrv; - return 0; - } - // else if (rc == REGDB_E_CLASSNOTREG) - // strcpy (info->messageText, "Driver not registered in the Registration Database!"); - } - else rc = DRVERR_DEVICE_ALREADY_OPEN; - } - else rc = DRVERR_DEVICE_NOT_FOUND; - - return rc; -} - - -LONG AsioDriverList::asioCloseDriver (int drvID) -{ - LPASIODRVSTRUCT lpdrv = 0; - IASIO *iasio; - - if ((lpdrv = getDrvStruct(drvID,lpdrvlist)) != 0) { - if (lpdrv->asiodrv) { - iasio = (IASIO *)lpdrv->asiodrv; - iasio->Release(); - lpdrv->asiodrv = 0; - } - } - - return 0; -} - -LONG AsioDriverList::asioGetDriverName (int drvID,char *drvname,int drvnamesize) -{ - LPASIODRVSTRUCT lpdrv = 0; - - if (!drvname) return DRVERR_INVALID_PARAM; - - if ((lpdrv = getDrvStruct(drvID,lpdrvlist)) != 0) { - if (strlen(lpdrv->drvname) < (unsigned int)drvnamesize) { - strcpy(drvname,lpdrv->drvname); - } - else { - memcpy(drvname,lpdrv->drvname,drvnamesize-4); - drvname[drvnamesize-4] = '.'; - drvname[drvnamesize-3] = '.'; - drvname[drvnamesize-2] = '.'; - drvname[drvnamesize-1] = 0; - } - return 0; - } - return DRVERR_DEVICE_NOT_FOUND; -} - -LONG AsioDriverList::asioGetDriverPath (int drvID,char *dllpath,int dllpathsize) -{ - LPASIODRVSTRUCT lpdrv = 0; - - if (!dllpath) return DRVERR_INVALID_PARAM; - - if ((lpdrv = getDrvStruct(drvID,lpdrvlist)) != 0) { - if (strlen(lpdrv->dllpath) < (unsigned int)dllpathsize) { - strcpy(dllpath,lpdrv->dllpath); - return 0; - } - dllpath[0] = 0; - return DRVERR_INVALID_PARAM; - } - return DRVERR_DEVICE_NOT_FOUND; -} - -LONG AsioDriverList::asioGetDriverCLSID (int drvID,CLSID *clsid) -{ - LPASIODRVSTRUCT lpdrv = 0; - - if (!clsid) return DRVERR_INVALID_PARAM; - - if ((lpdrv = getDrvStruct(drvID,lpdrvlist)) != 0) { - memcpy(clsid,&lpdrv->clsid,sizeof(CLSID)); - return 0; - } - return DRVERR_DEVICE_NOT_FOUND; -} - - diff --git a/plugins/spu2ghz/asio/asiolist.h b/plugins/spu2ghz/asio/asiolist.h deleted file mode 100644 index 1f504af3c2..0000000000 --- a/plugins/spu2ghz/asio/asiolist.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef __asiolist__ -#define __asiolist__ - -#define DRVERR -5000 -#define DRVERR_INVALID_PARAM DRVERR-1 -#define DRVERR_DEVICE_ALREADY_OPEN DRVERR-2 -#define DRVERR_DEVICE_NOT_FOUND DRVERR-3 - -#define MAXPATHLEN 512 -#define MAXDRVNAMELEN 128 - -struct asiodrvstruct -{ - int drvID; - CLSID clsid; - char dllpath[MAXPATHLEN]; - char drvname[MAXDRVNAMELEN]; - LPVOID asiodrv; - struct asiodrvstruct *next; -}; - -typedef struct asiodrvstruct ASIODRVSTRUCT; -typedef ASIODRVSTRUCT *LPASIODRVSTRUCT; - -class AsioDriverList { -public: - AsioDriverList(); - ~AsioDriverList(); - - LONG asioOpenDriver (int,VOID **); - LONG asioCloseDriver (int); - - // nice to have - LONG asioGetNumDev (VOID); - LONG asioGetDriverName (int,char *,int); - LONG asioGetDriverPath (int,char *,int); - LONG asioGetDriverCLSID (int,CLSID *); - - // or use directly access - LPASIODRVSTRUCT lpdrvlist; - int numdrv; -}; - -typedef class AsioDriverList *LPASIODRIVERLIST; - -#endif diff --git a/plugins/spu2ghz/asio/asiosys.h b/plugins/spu2ghz/asio/asiosys.h deleted file mode 100644 index a61c233197..0000000000 --- a/plugins/spu2ghz/asio/asiosys.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef __asiosys__ - #define __asiosys__ - - #ifdef WIN32 - #undef MAC - #define PPC 0 - #define WINDOWS 1 - #define SGI 0 - #define SUN 0 - #define LINUX 0 - #define BEOS 0 - - #define NATIVE_INT64 0 - #define IEEE754_64FLOAT 1 - - #elif BEOS - #define MAC 0 - #define PPC 0 - #define WINDOWS 0 - #define PC 0 - #define SGI 0 - #define SUN 0 - #define LINUX 0 - - #define NATIVE_INT64 0 - #define IEEE754_64FLOAT 1 - - #ifndef DEBUG - #define DEBUG 0 - #if DEBUG - void DEBUGGERMESSAGE(char *string); - #else - #define DEBUGGERMESSAGE(a) - #endif - #endif - - #elif SGI - #define MAC 0 - #define PPC 0 - #define WINDOWS 0 - #define PC 0 - #define SUN 0 - #define LINUX 0 - #define BEOS 0 - - #define NATIVE_INT64 0 - #define IEEE754_64FLOAT 1 - - #ifndef DEBUG - #define DEBUG 0 - #if DEBUG - void DEBUGGERMESSAGE(char *string); - #else - #define DEBUGGERMESSAGE(a) - #endif - #endif - - #else // MAC - - #define MAC 1 - #define PPC 1 - #define WINDOWS 0 - #define PC 0 - #define SGI 0 - #define SUN 0 - #define LINUX 0 - #define BEOS 0 - - #define NATIVE_INT64 0 - #define IEEE754_64FLOAT 1 - - #ifndef DEBUG - #define DEBUG 0 - #if DEBUG - void DEBUGGERMESSAGE(char *string); - #else - #define DEBUGGERMESSAGE(a) - #endif - #endif - #endif - -#endif diff --git a/plugins/spu2ghz/asio/combase.cpp b/plugins/spu2ghz/asio/combase.cpp deleted file mode 100644 index 84b64f88ff..0000000000 --- a/plugins/spu2ghz/asio/combase.cpp +++ /dev/null @@ -1,202 +0,0 @@ -//==========================================================================; -// -// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY -// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR -// PURPOSE. -// -// Copyright (c) 1992 - 1996 Microsoft Corporation. All Rights Reserved. -// -//--------------------------------------------------------------------------; - -// Base class hierachy for creating COM objects, December 1994 - -#include -#include "wxdebug.h" -#include "combase.h" -#pragma warning( disable : 4514 ) // Disable warnings re unused inline functions - - -/* Define the static member variable */ - -LONG CBaseObject::m_cObjects = 0; - - -/* Constructor */ - -CBaseObject::CBaseObject(TCHAR *pName) -{ - /* Increment the number of active objects */ - InterlockedIncrement(&m_cObjects); - -#ifdef DEBUG - m_dwCookie = DbgRegisterObjectCreation(pName); -#endif -} - - -/* Destructor */ - -CBaseObject::~CBaseObject() -{ - /* Decrement the number of objects active */ - InterlockedDecrement(&m_cObjects); - -#ifdef DEBUG - DbgRegisterObjectDestruction(m_dwCookie); -#endif -} - - -/* Constructor */ - -// We know we use "this" in the initialization list, we also know we don't modify *phr. -#pragma warning( disable : 4355 4100 ) -CUnknown::CUnknown(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr) -: CBaseObject(pName) -/* Start the object with a reference count of zero - when the */ -/* object is queried for it's first interface this may be */ -/* incremented depending on whether or not this object is */ -/* currently being aggregated upon */ -, m_cRef(0) -/* Set our pointer to our IUnknown interface. */ -/* If we have an outer, use its, otherwise use ours. */ -/* This pointer effectivly points to the owner of */ -/* this object and can be accessed by the GetOwner() method. */ -, m_pUnknown( pUnk != 0 ? pUnk : reinterpret_cast( static_cast(this) ) ) - /* Why the double cast? Well, the inner cast is a type-safe cast */ - /* to pointer to a type from which we inherit. The second is */ - /* type-unsafe but works because INonDelegatingUnknown "behaves */ - /* like" IUnknown. (Only the names on the methods change.) */ -{ - // Everything we need to do has been done in the initializer list -} -#pragma warning( default : 4355 4100 ) - -/* QueryInterface */ - -STDMETHODIMP CUnknown::NonDelegatingQueryInterface(REFIID riid, void ** ppv) -{ - CheckPointer(ppv,E_POINTER); - ValidateReadWritePtr(ppv,sizeof(PVOID)); - - /* We know only about IUnknown */ - - if (riid == IID_IUnknown) { - GetInterface((LPUNKNOWN) (PNDUNKNOWN) this, ppv); - return NOERROR; - } else { - *ppv = NULL; - return E_NOINTERFACE; - } -} - -/* We have to ensure that we DON'T use a max macro, since these will typically */ -/* lead to one of the parameters being evaluated twice. Since we are worried */ -/* about concurrency, we can't afford to access the m_cRef twice since we can't */ -/* afford to run the risk that its value having changed between accesses. */ -#ifdef max - #undef max -#endif - -template inline static T max( const T & a, const T & b ) -{ - return a > b ? a : b; -} - -/* AddRef */ - -STDMETHODIMP_(ULONG) CUnknown::NonDelegatingAddRef() -{ - LONG lRef = InterlockedIncrement( &m_cRef ); - ASSERT(lRef > 0); - DbgLog((LOG_MEMORY,3,TEXT(" Obj %d ref++ = %d"), - m_dwCookie, m_cRef)); - return max(ULONG(m_cRef), 1ul); -} - - - -/* Release */ - -STDMETHODIMP_(ULONG) CUnknown::NonDelegatingRelease() -{ - /* If the reference count drops to zero delete ourselves */ - - LONG lRef = InterlockedDecrement( &m_cRef ); - ASSERT(lRef >= 0); - - DbgLog((LOG_MEMORY,3,TEXT(" Object %d ref-- = %d"), - m_dwCookie, m_cRef)); - if (lRef == 0) { - - // COM rules say we must protect against re-entrancy. - // If we are an aggregator and we hold our own interfaces - // on the aggregatee, the QI for these interfaces will - // addref ourselves. So after doing the QI we must release - // a ref count on ourselves. Then, before releasing the - // private interface, we must addref ourselves. When we do - // this from the destructor here it will result in the ref - // count going to 1 and then back to 0 causing us to - // re-enter the destructor. Hence we add an extra refcount here - // once we know we will delete the object. - // for an example aggregator see filgraph\distrib.cpp. - - m_cRef++; - - delete this; - return ULONG(0); - } else { - return max(ULONG(m_cRef), 1ul); - } -} - - -/* Return an interface pointer to a requesting client - performing a thread safe AddRef as necessary */ - -HRESULT CUnknown::GetInterface(LPUNKNOWN pUnk, void **ppv) -{ - CheckPointer(ppv, E_POINTER); - *ppv = pUnk; - pUnk->AddRef(); - return NOERROR; -} - - -/* Compares two interfaces and returns TRUE if they are on the same object */ - -BOOL IsEqualObject(IUnknown *pFirst, IUnknown *pSecond) -{ - /* Different objects can't have the same interface pointer for - any interface - */ - if (pFirst == pSecond) { - return TRUE; - } - /* OK - do it the hard way - check if they have the same - IUnknown pointers - a single object can only have one of these - */ - LPUNKNOWN pUnknown1; // Retrieve the IUnknown interface - LPUNKNOWN pUnknown2; // Retrieve the other IUnknown interface - HRESULT hr; // General OLE return code - - ASSERT(pFirst); - ASSERT(pSecond); - - /* See if the IUnknown pointers match */ - - hr = pFirst->QueryInterface(IID_IUnknown,(void **) &pUnknown1); - ASSERT(SUCCEEDED(hr)); - ASSERT(pUnknown1); - - hr = pSecond->QueryInterface(IID_IUnknown,(void **) &pUnknown2); - ASSERT(SUCCEEDED(hr)); - ASSERT(pUnknown2); - - /* Release the extra interfaces we hold */ - - pUnknown1->Release(); - pUnknown2->Release(); - return (pUnknown1 == pUnknown2); -} diff --git a/plugins/spu2ghz/asio/combase.h b/plugins/spu2ghz/asio/combase.h deleted file mode 100644 index 972da78ce6..0000000000 --- a/plugins/spu2ghz/asio/combase.h +++ /dev/null @@ -1,282 +0,0 @@ -//==========================================================================; -// -// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY -// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR -// PURPOSE. -// -// Copyright (c) 1992 - 1996 Microsoft Corporation. All Rights Reserved. -// -//--------------------------------------------------------------------------; - -// Base class hierachy for creating COM objects, December 1994 - -/* - -a. Derive your COM object from CUnknown - -b. Make a static CreateInstance function that takes an LPUNKNOWN, an HRESULT * - and a TCHAR *. The LPUNKNOWN defines the object to delegate IUnknown calls - to. The HRESULT * allows error codes to be passed around constructors and - the TCHAR * is a descriptive name that can be printed on the debugger. - - It is important that constructors only change the HRESULT * if they have - to set an ERROR code, if it was successful then leave it alone or you may - overwrite an error code from an object previously created. - - When you call a constructor the descriptive name should be in static store - as we do not copy the string. To stop large amounts of memory being used - in retail builds by all these static strings use the NAME macro, - - CMyFilter = new CImplFilter(NAME("My filter"),pUnknown,phr); - if (FAILED(hr)) { - return hr; - } - - In retail builds NAME(_x_) compiles to NULL, the base CBaseObject class - knows not to do anything with objects that don't have a name. - -c. Have a constructor for your object that passes the LPUNKNOWN, HRESULT * and - TCHAR * to the CUnknown constructor. You can set the HRESULT if you have an - error, or just simply pass it through to the constructor. - - The object creation will fail in the class factory if the HRESULT indicates - an error (ie FAILED(HRESULT) == TRUE) - -d. Create a FactoryTemplate with your object's class id and CreateInstance - function. - -Then (for each interface) either - -Multiple inheritance - -1. Also derive it from ISomeInterface -2. Include DECLARE_IUNKNOWN in your class definition to declare - implementations of QueryInterface, AddRef and Release that - call the outer unknown -3. Override NonDelegatingQueryInterface to expose ISomeInterface by - code something like - - if (riid == IID_ISomeInterface) { - return GetInterface((ISomeInterface *) this, ppv); - } else { - return CUnknown::NonDelegatingQueryInterface(riid, ppv); - } - -4. Declare and implement the member functions of ISomeInterface. - -or: Nested interfaces - -1. Declare a class derived from CUnknown -2. Include DECLARE_IUNKNOWN in your class definition -3. Override NonDelegatingQueryInterface to expose ISomeInterface by - code something like - - if (riid == IID_ISomeInterface) { - return GetInterface((ISomeInterface *) this, ppv); - } else { - return CUnknown::NonDelegatingQueryInterface(riid, ppv); - } - -4. Implement the member functions of ISomeInterface. Use GetOwner() to - access the COM object class. - -And in your COM object class: - -5. Make the nested class a friend of the COM object class, and declare - an instance of the nested class as a member of the COM object class. - - NOTE that because you must always pass the outer unknown and an hResult - to the CUnknown constructor you cannot use a default constructor, in - other words you will have to make the member variable a pointer to the - class and make a NEW call in your constructor to actually create it. - -6. override the NonDelegatingQueryInterface with code like this: - - if (riid == IID_ISomeInterface) { - return m_pImplFilter-> - NonDelegatingQueryInterface(IID_ISomeInterface, ppv); - } else { - return CUnknown::NonDelegatingQueryInterface(riid, ppv); - } - -You can have mixed classes which support some interfaces via multiple -inheritance and some via nested classes - -*/ - -#ifndef __COMBASE__ -#define __COMBASE__ - -/* The DLLENTRY module initialises the module handle on loading */ - -extern HINSTANCE g_hInst; - -/* On DLL load remember which platform we are running on */ - -extern DWORD g_amPlatform; -extern OSVERSIONINFO g_osInfo; // Filled in by GetVersionEx - -/* Version of IUnknown that is renamed to allow a class to support both - non delegating and delegating IUnknowns in the same COM object */ - -DECLARE_INTERFACE(INonDelegatingUnknown) -{ - STDMETHOD(NonDelegatingQueryInterface) (THIS_ REFIID, LPVOID *) PURE; - STDMETHOD_(ULONG, NonDelegatingAddRef)(THIS) PURE; - STDMETHOD_(ULONG, NonDelegatingRelease)(THIS) PURE; -}; - -typedef INonDelegatingUnknown *PNDUNKNOWN; - - -/* This is the base object class that supports active object counting. As - part of the debug facilities we trace every time a C++ object is created - or destroyed. The name of the object has to be passed up through the class - derivation list during construction as you cannot call virtual functions - in the constructor. The downside of all this is that every single object - constructor has to take an object name parameter that describes it */ - -class CBaseObject -{ - -private: - - // Disable the copy constructor and assignment by default so you will get - // compiler errors instead of unexpected behaviour if you pass objects - // by value or assign objects. - CBaseObject(const CBaseObject& objectSrc); // no implementation - void operator=(const CBaseObject& objectSrc); // no implementation - -private: - static LONG m_cObjects; /* Total number of objects active */ - -protected: -#ifdef DEBUG - DWORD m_dwCookie; /* Cookie identifying this object */ -#endif - - -public: - - /* These increment and decrement the number of active objects */ - - CBaseObject(TCHAR *pName); - ~CBaseObject(); - - /* Call this to find if there are any CUnknown derived objects active */ - - static LONG ObjectsActive() { - return m_cObjects; - }; -}; - - -/* An object that supports one or more COM interfaces will be based on - this class. It supports counting of total objects for DLLCanUnloadNow - support, and an implementation of the core non delegating IUnknown */ - -class CUnknown : public INonDelegatingUnknown, - public CBaseObject -{ - -private: - const LPUNKNOWN m_pUnknown; /* Owner of this object */ - -protected: /* So we can override NonDelegatingRelease() */ - volatile LONG m_cRef; /* Number of reference counts */ - -public: - - CUnknown(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr); - virtual ~CUnknown() {}; - - /* Return the owner of this object */ - - LPUNKNOWN GetOwner() const { - return m_pUnknown; - }; - - /* Called from the class factory to create a new instance, it is - pure virtual so it must be overriden in your derived class */ - - /* static CUnknown *CreateInstance(LPUNKNOWN, HRESULT *) */ - - /* Non delegating unknown implementation */ - - STDMETHODIMP NonDelegatingQueryInterface(REFIID, void **); - STDMETHODIMP_(ULONG) NonDelegatingAddRef(); - STDMETHODIMP_(ULONG) NonDelegatingRelease(); - - /* Return an interface pointer to a requesting client - performing a thread safe AddRef as necessary */ - - HRESULT GetInterface(LPUNKNOWN pUnk, void **ppv); - - -}; - -#if defined(_MSC_VER) && (_MSC_VER<1300) -/* The standard InterlockedXXX functions won't take volatiles */ -static inline LONG InterlockedIncrement( volatile LONG * plong ) -{ return InterlockedIncrement( const_cast( plong ) ); } - -static inline LONG InterlockedDecrement( volatile LONG * plong ) -{ return InterlockedDecrement( const_cast( plong ) ); } - -static inline LONG InterlockedExchange( volatile LONG * plong, LONG new_value ) -{ return InterlockedExchange( const_cast( plong ), new_value ); } -#endif - -/* A function that can create a new COM object */ - -typedef CUnknown *(*LPFNNewCOMObject)(LPUNKNOWN pUnkOuter, HRESULT *phr); - -/* A function (can be NULL) which is called from the DLL entrypoint - routine for each factory template: - - bLoading - TRUE on DLL load, FALSE on DLL unload - rclsid - the m_ClsID of the entry -*/ -typedef void (*LPFNInitRoutine)(BOOL bLoading, const CLSID *rclsid); - -/* Create one of these per object class in an array so that - the default class factory code can create new instances */ - -class CFactoryTemplate { - -public: - - const WCHAR *m_Name; - const CLSID *m_ClsID; - LPFNNewCOMObject m_lpfnNew; - LPFNInitRoutine m_lpfnInit; - - BOOL IsClassID(REFCLSID rclsid) const { - return (IsEqualCLSID(*m_ClsID,rclsid)); - }; - - CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr) const { - return m_lpfnNew(pUnk, phr); - }; -}; - - -/* You must override the (pure virtual) NonDelegatingQueryInterface to return - interface pointers (using GetInterface) to the interfaces your derived - class supports (the default implementation only supports IUnknown) */ - -#define DECLARE_IUNKNOWN \ - STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { \ - return GetOwner()->QueryInterface(riid,ppv); \ - }; \ - STDMETHODIMP_(ULONG) AddRef() { \ - return GetOwner()->AddRef(); \ - }; \ - STDMETHODIMP_(ULONG) Release() { \ - return GetOwner()->Release(); \ - }; - -#endif /* __COMBASE__ */ - - diff --git a/plugins/spu2ghz/asio/debugmessage.cpp b/plugins/spu2ghz/asio/debugmessage.cpp deleted file mode 100644 index 2f47926bc6..0000000000 --- a/plugins/spu2ghz/asio/debugmessage.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "asiosys.h" - -#if DEBUG -#if MAC -#include -void DEBUGGERMESSAGE(char *string) -{ - c2pstr(string); - DebugStr((unsigned char *)string); -} -#else -#error debugmessage -#endif -#endif diff --git a/plugins/spu2ghz/asio/dllentry.cpp b/plugins/spu2ghz/asio/dllentry.cpp deleted file mode 100644 index be717d4fd3..0000000000 --- a/plugins/spu2ghz/asio/dllentry.cpp +++ /dev/null @@ -1,323 +0,0 @@ -//==========================================================================; -// -// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY -// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR -// PURPOSE. -// -// Copyright (c) 1992 - 1996 Microsoft Corporation. All Rights Reserved. -// -//--------------------------------------------------------------------------; - -// -// classes used to support dll entrypoints for COM objects. -// -// #include "switches.h" - -#include -#include "wxdebug.h" -#include "combase.h" -#ifdef DEBUG -#include -#endif - -#include - -extern CFactoryTemplate g_Templates[]; -extern int g_cTemplates; - -HINSTANCE hinstance = 0; -DWORD g_amPlatform; // VER_PLATFORM_WIN32_WINDOWS etc... (from GetVersionEx) -OSVERSIONINFO g_osInfo; - -// -// an instance of this is created by the DLLGetClassObject entrypoint -// it uses the CFactoryTemplate object it is given to support the -// IClassFactory interface - -class CClassFactory : public IClassFactory -{ - -private: - const CFactoryTemplate * m_pTemplate; - - ULONG m_cRef; - - static int m_cLocked; -public: - CClassFactory(const CFactoryTemplate *); - - // IUnknown - STDMETHODIMP QueryInterface(REFIID riid, void ** ppv); - STDMETHODIMP_(ULONG)AddRef(); - STDMETHODIMP_(ULONG)Release(); - - // IClassFactory - STDMETHODIMP CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, void **pv); - STDMETHODIMP LockServer(BOOL fLock); - - // allow DLLGetClassObject to know about global server lock status - static BOOL IsLocked() { - return (m_cLocked > 0); - }; -}; - -// process-wide dll locked state -int CClassFactory::m_cLocked = 0; - -CClassFactory::CClassFactory(const CFactoryTemplate *pTemplate) -{ - m_cRef = 0; - m_pTemplate = pTemplate; -} - - -STDMETHODIMP CClassFactory::QueryInterface(REFIID riid,void **ppv) -{ - CheckPointer(ppv,E_POINTER) - ValidateReadWritePtr(ppv,sizeof(PVOID)); - *ppv = NULL; - - // any interface on this object is the object pointer. - if ((riid == IID_IUnknown) || (riid == IID_IClassFactory)) { - *ppv = (LPVOID) this; - // AddRef returned interface pointer - ((LPUNKNOWN) *ppv)->AddRef(); - return NOERROR; - } - - return ResultFromScode(E_NOINTERFACE); -} - - -STDMETHODIMP_(ULONG) CClassFactory::AddRef() -{ - return ++m_cRef; -} - -STDMETHODIMP_(ULONG) CClassFactory::Release() -{ - LONG rc; - - if (--m_cRef == 0) { - delete this; - rc = 0; - } else rc = m_cRef; - - return rc; -} - -STDMETHODIMP CClassFactory::CreateInstance(LPUNKNOWN pUnkOuter,REFIID riid,void **pv) -{ - CheckPointer(pv,E_POINTER) - ValidateReadWritePtr(pv,sizeof(void *)); - - /* Enforce the normal OLE rules regarding interfaces and delegation */ - - if (pUnkOuter != NULL) { - if (IsEqualIID(riid,IID_IUnknown) == FALSE) { - return ResultFromScode(E_NOINTERFACE); - } - } - - /* Create the new object through the derived class's create function */ - - HRESULT hr = NOERROR; - CUnknown *pObj = m_pTemplate->CreateInstance(pUnkOuter, &hr); - - if (pObj == NULL) { - return E_OUTOFMEMORY; - } - - /* Delete the object if we got a construction error */ - - if (FAILED(hr)) { - delete pObj; - return hr; - } - - /* Get a reference counted interface on the object */ - - /* We wrap the non-delegating QI with NDAddRef & NDRelease. */ - /* This protects any outer object from being prematurely */ - /* released by an inner object that may have to be created */ - /* in order to supply the requested interface. */ - pObj->NonDelegatingAddRef(); - hr = pObj->NonDelegatingQueryInterface(riid, pv); - pObj->NonDelegatingRelease(); - /* Note that if NonDelegatingQueryInterface fails, it will */ - /* not increment the ref count, so the NonDelegatingRelease */ - /* will drop the ref back to zero and the object will "self-*/ - /* destruct". Hence we don't need additional tidy-up code */ - /* to cope with NonDelegatingQueryInterface failing. */ - - if (SUCCEEDED(hr)) { - ASSERT(*pv); - } - - return hr; -} - -STDMETHODIMP CClassFactory::LockServer(BOOL fLock) -{ - if (fLock) { - m_cLocked++; - } else { - m_cLocked--; - } - return NOERROR; -} - - -// --- COM entrypoints ----------------------------------------- -// DllRegisterServer - -//called by COM to get the class factory object for a given class -STDAPI DllGetClassObject(REFCLSID rClsID,REFIID riid,void **pv) -{ - // DebugBreak(); - - if (!(riid == IID_IUnknown) && !(riid == IID_IClassFactory)) { - return E_NOINTERFACE; - } - - // traverse the array of templates looking for one with this - // class id - for (int i = 0; i < g_cTemplates; i++) { - const CFactoryTemplate * pT = &g_Templates[i]; - if (pT->IsClassID(rClsID)) { - - // found a template - make a class factory based on this - // template - - *pv = (LPVOID) (LPUNKNOWN) new CClassFactory(pT); - if (*pv == NULL) { - return E_OUTOFMEMORY; - } - ((LPUNKNOWN)*pv)->AddRef(); - return NOERROR; - } - } - return CLASS_E_CLASSNOTAVAILABLE; -} - -// -// Call any initialization routines -// -void DllInitClasses(BOOL bLoading) -{ - int i; - - // DebugBreak(); - - // traverse the array of templates calling the init routine - // if they have one - for (i = 0; i < g_cTemplates; i++) { - const CFactoryTemplate * pT = &g_Templates[i]; - if (pT->m_lpfnInit != NULL) { - (*pT->m_lpfnInit)(bLoading, pT->m_ClsID); - } - } - -} - -// called by COM to determine if this dll can be unloaded -// return ok unless there are outstanding objects or a lock requested -// by IClassFactory::LockServer -// -// CClassFactory has a static function that can tell us about the locks, -// and CCOMObject has a static function that can tell us about the active -// object count -STDAPI DllCanUnloadNow() -{ - // DebugBreak(); - - DbgLog((LOG_MEMORY,2,TEXT("DLLCanUnloadNow called - IsLocked = %d, Active objects = %d"), - CClassFactory::IsLocked(), - CBaseObject::ObjectsActive())); - - if (CClassFactory::IsLocked() || CBaseObject::ObjectsActive()) { - - return S_FALSE; - } - else { - return S_OK; - } -} - - -// --- standard WIN32 entrypoints -------------------------------------- - - -//extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID); -//BOOL WINAPI DllEntryPoint(HINSTANCE hInstance,ULONG ulReason,LPVOID pv) -//BOOL WINAPI DllMain (HINSTANCE hInstance,ULONG ulReason,LPVOID pv) -BOOL WINAPI DllEntryPoint (HINSTANCE hInstance,ULONG ulReason,LPVOID pv) -{ - - // DebugBreak(); - - switch (ulReason) { - - case DLL_PROCESS_ATTACH: - DisableThreadLibraryCalls(hInstance); - DbgInitialise(hInstance); - { - // The platform identifier is used to work out whether - // full unicode support is available or not. Hence the - // default will be the lowest common denominator - i.e. N/A - g_amPlatform = VER_PLATFORM_WIN32_WINDOWS; // win95 assumed in case GetVersionEx fails - - g_osInfo.dwOSVersionInfoSize = sizeof(g_osInfo); - if (GetVersionEx(&g_osInfo)) { - g_amPlatform = g_osInfo.dwPlatformId; - } - else { - DbgLog((LOG_ERROR, 1, "Failed to get the OS platform, assuming Win95")); - } - } - hinstance = hInstance; - DllInitClasses(TRUE); - - break; - - case DLL_PROCESS_DETACH: - DllInitClasses(FALSE); - -#ifdef DEBUG - if (CBaseObject::ObjectsActive()) { - DbgSetModuleLevel(LOG_MEMORY, 2); - TCHAR szInfo[512]; - extern TCHAR m_ModuleName[]; // Cut down module name - - TCHAR FullName[_MAX_PATH]; // Load the full path and module name - TCHAR *pName; // Searches from the end for a backslash - - GetModuleFileName(NULL,FullName,_MAX_PATH); - pName = _tcsrchr(FullName,'\\'); - if (pName == NULL) { - pName = FullName; - } - else { - pName++; - } - - DWORD cch = wsprintf(szInfo, TEXT("Executable: %s Pid %x Tid %x. "), - pName, GetCurrentProcessId(), GetCurrentThreadId()); - - wsprintf(szInfo+cch, TEXT("Module %s, %d objects left active!"), - m_ModuleName, CBaseObject::ObjectsActive()); - DbgAssert(szInfo, TEXT(__FILE__),__LINE__); - - // If running remotely wait for the Assert to be acknowledged - // before dumping out the object register - DbgDumpObjectRegister(); - } - DbgTerminate(); -#endif - break; - } - return TRUE; -} - - diff --git a/plugins/spu2ghz/asio/ginclude.h b/plugins/spu2ghz/asio/ginclude.h deleted file mode 100644 index 5603fac869..0000000000 --- a/plugins/spu2ghz/asio/ginclude.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef __gInclude__ -#define __gInclude__ - -#if SGI - #undef BEOS - #undef MAC - #undef WINDOWS - // - #define ASIO_BIG_ENDIAN 1 - #define ASIO_CPU_MIPS 1 -#elif defined WIN32 - #undef BEOS - #undef MAC - #undef SGI - #define WINDOWS 1 - #define ASIO_LITTLE_ENDIAN 1 - #define ASIO_CPU_X86 1 -#elif BEOS - #undef MAC - #undef SGI - #undef WINDOWS - #define ASIO_LITTLE_ENDIAN 1 - #define ASIO_CPU_X86 1 - // -#else - #define MAC 1 - #undef BEOS - #undef WINDOWS - #undef SGI - #define ASIO_BIG_ENDIAN 1 - #define ASIO_CPU_PPC 1 -#endif - -// always -#define NATIVE_INT64 0 -#define IEEE754_64FLOAT 1 - -#endif // __gInclude__ diff --git a/plugins/spu2ghz/asio/iasiodrv.h b/plugins/spu2ghz/asio/iasiodrv.h deleted file mode 100644 index 1496f0fae2..0000000000 --- a/plugins/spu2ghz/asio/iasiodrv.h +++ /dev/null @@ -1,37 +0,0 @@ -#include "asiosys.h" -#include "asio.h" - -/* Forward Declarations */ - -#ifndef __ASIODRIVER_FWD_DEFINED__ -#define __ASIODRIVER_FWD_DEFINED__ -typedef interface IASIO IASIO; -#endif /* __ASIODRIVER_FWD_DEFINED__ */ - -interface IASIO : public IUnknown -{ - - virtual ASIOBool init(void *sysHandle) = 0; - virtual void getDriverName(char *name) = 0; - virtual long getDriverVersion() = 0; - virtual void getErrorMessage(char *string) = 0; - virtual ASIOError start() = 0; - virtual ASIOError stop() = 0; - virtual ASIOError getChannels(long *numInputChannels, long *numOutputChannels) = 0; - virtual ASIOError getLatencies(long *inputLatency, long *outputLatency) = 0; - virtual ASIOError getBufferSize(long *minSize, long *maxSize, - long *preferredSize, long *granularity) = 0; - virtual ASIOError canSampleRate(ASIOSampleRate sampleRate) = 0; - virtual ASIOError getSampleRate(ASIOSampleRate *sampleRate) = 0; - virtual ASIOError setSampleRate(ASIOSampleRate sampleRate) = 0; - virtual ASIOError getClockSources(ASIOClockSource *clocks, long *numSources) = 0; - virtual ASIOError setClockSource(long reference) = 0; - virtual ASIOError getSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp) = 0; - virtual ASIOError getChannelInfo(ASIOChannelInfo *info) = 0; - virtual ASIOError createBuffers(ASIOBufferInfo *bufferInfos, long numChannels, - long bufferSize, ASIOCallbacks *callbacks) = 0; - virtual ASIOError disposeBuffers() = 0; - virtual ASIOError controlPanel() = 0; - virtual ASIOError future(long selector,void *opt) = 0; - virtual ASIOError outputReady() = 0; -}; diff --git a/plugins/spu2ghz/asio/register.cpp b/plugins/spu2ghz/asio/register.cpp deleted file mode 100644 index 8c6cbea6de..0000000000 --- a/plugins/spu2ghz/asio/register.cpp +++ /dev/null @@ -1,332 +0,0 @@ -#include -#include - -typedef struct keylist -{ - HKEY mainKey; - HKEY subKey; - char *keyname; - struct keylist *next; -} KEYLIST, *LPKEYLIST; - -#define CLSID_STRING_LEN 100 -#define MAX_PATH_LEN 360 - -#define DEV_ERR_SELFREG -100 -#define ERRSREG_MODULE_NOT_FOUND DEV_ERR_SELFREG-1 -#define ERRSREG_MODPATH_NOT_FOUND DEV_ERR_SELFREG-2 -#define ERRSREG_STRING_FROM_CLSID DEV_ERR_SELFREG-3 -#define ERRSREG_CHAR_TO_MULTIBYTE DEV_ERR_SELFREG-4 - -#define SZREGSTR_DESCRIPTION "Description" -#define SZREGSTR_CLSID "CLSID" -#define SZREGSTR_INPROCSERVER32 "InprocServer32" -#define SZREGSTR_THREADINGMODEL "ThreadingModel" -#define SZREGSTR_SOFTWARE "SOFTWARE" -#define SZREGSTR_ASIO "ASIO" - -LONG RegisterAsioDriver (CLSID,char *,char *,char *,char *); -LONG UnregisterAsioDriver (CLSID,char *,char *); - -static LONG findRegPath (HKEY,char *); -static LONG createRegPath (HKEY,char *,char *); -static LONG createRegStringValue (HKEY,char *,char *,char *); -static LONG getRegString (HKEY,char *,char *,LPVOID,DWORD); -static LPKEYLIST findAllSubKeys (HKEY,HKEY,DWORD,char *,LPKEYLIST); -static LONG deleteRegPath (HKEY,char *,char *); - -static char subkeybuf[MAX_PATH_LEN]; - - -// ------------------------------------------ -// Global Functions -// ------------------------------------------ -LONG RegisterAsioDriver (CLSID clsid,char *szdllname,char *szregname,char *szasiodesc,char *szthreadmodel) -{ - HMODULE hMod; - char szDLLPath[MAX_PATH_LEN]; - char szModuleName[MAX_PATH_LEN]; - char szregpath[MAX_PATH_LEN]; - char szclsid[CLSID_STRING_LEN]; - LPOLESTR wszCLSID = NULL; - BOOL newregentry = FALSE; - LONG rc; - - hMod = GetModuleHandle(szdllname); - if (!hMod) return ERRSREG_MODULE_NOT_FOUND; - szModuleName[0] = 0; - GetModuleFileName(hMod,szModuleName,MAX_PATH_LEN); - if (!szModuleName[0]) return ERRSREG_MODPATH_NOT_FOUND; - CharLower((LPTSTR)szModuleName); - - rc = (LONG)StringFromCLSID(clsid,&wszCLSID); - if (rc != S_OK) return ERRSREG_STRING_FROM_CLSID; - rc = (LONG)WideCharToMultiByte(CP_ACP,0,(LPWSTR)wszCLSID,-1,szclsid,CLSID_STRING_LEN,0,0); - if (!rc) return ERRSREG_CHAR_TO_MULTIBYTE; - - sprintf(szregpath,"%s\\%s",SZREGSTR_CLSID,szclsid); - rc = findRegPath(HKEY_CLASSES_ROOT,szregpath); - if (rc) { - sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_CLSID,szclsid,SZREGSTR_INPROCSERVER32); - getRegString (HKEY_CLASSES_ROOT,szregpath,0,(LPVOID)szDLLPath,MAX_PATH_LEN); - CharLower((LPTSTR)szDLLPath); - rc = (LONG)strcmp(szDLLPath,szModuleName); - if (rc) { - // delete old regentry - sprintf(szregpath,"%s",SZREGSTR_CLSID); - deleteRegPath(HKEY_CLASSES_ROOT,szregpath,szclsid); - newregentry = TRUE; - } - } - else newregentry = TRUE; - - if (newregentry) { - // HKEY_CLASSES_ROOT\CLSID\{...} - sprintf(szregpath,"%s",SZREGSTR_CLSID); - createRegPath (HKEY_CLASSES_ROOT,szregpath,szclsid); - // HKEY_CLASSES_ROOT\CLSID\{...} -> Description - sprintf(szregpath,"%s\\%s",SZREGSTR_CLSID,szclsid); - createRegStringValue(HKEY_CLASSES_ROOT,szregpath,0,szasiodesc); - // HKEY_CLASSES_ROOT\CLSID\InProcServer32 - sprintf(szregpath,"%s\\%s",SZREGSTR_CLSID,szclsid); - createRegPath (HKEY_CLASSES_ROOT,szregpath,SZREGSTR_INPROCSERVER32); - // HKEY_CLASSES_ROOT\CLSID\InProcServer32 -> DLL path - sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_CLSID,szclsid,SZREGSTR_INPROCSERVER32); - createRegStringValue(HKEY_CLASSES_ROOT,szregpath,0,szModuleName); - // HKEY_CLASSES_ROOT\CLSID\InProcServer32 -> ThreadingModel - createRegStringValue(HKEY_CLASSES_ROOT,szregpath,SZREGSTR_THREADINGMODEL,szthreadmodel); - } - - // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO - sprintf(szregpath,"%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO); - rc = findRegPath(HKEY_LOCAL_MACHINE,szregpath); - if (rc) { - sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO,szregname); - rc = findRegPath(HKEY_LOCAL_MACHINE,szregpath); - if (rc) { - sprintf(szregpath,"%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO); - deleteRegPath(HKEY_LOCAL_MACHINE,szregpath,szregname); - } - } - else { - // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO - sprintf(szregpath,"%s",SZREGSTR_SOFTWARE); - createRegPath (HKEY_LOCAL_MACHINE,szregpath,SZREGSTR_ASIO); - } - - // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO\ - sprintf(szregpath,"%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO); - createRegPath (HKEY_LOCAL_MACHINE,szregpath,szregname); - - // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO\ -> CLSID - // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO\ -> Description - sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO,szregname); - createRegStringValue(HKEY_LOCAL_MACHINE,szregpath,SZREGSTR_CLSID,szclsid); - createRegStringValue(HKEY_LOCAL_MACHINE,szregpath,SZREGSTR_DESCRIPTION,szasiodesc); - - return 0; -} - - -LONG UnregisterAsioDriver (CLSID clsid,char *szdllname,char *szregname) -{ - LONG rc; - HMODULE hMod; - char szregpath[MAX_PATH_LEN]; - char szModuleName[MAX_PATH_LEN]; - char szclsid[CLSID_STRING_LEN]; - LPOLESTR wszCLSID = NULL; - - - hMod = GetModuleHandle(szdllname); - if (!hMod) return ERRSREG_MODULE_NOT_FOUND; - szModuleName[0] = 0; - GetModuleFileName(hMod,szModuleName,MAX_PATH_LEN); - if (!szModuleName[0]) return ERRSREG_MODPATH_NOT_FOUND; - CharLower((LPTSTR)szModuleName); - - rc = (LONG)StringFromCLSID(clsid,&wszCLSID) ; - if (rc != S_OK) return ERRSREG_STRING_FROM_CLSID; - rc = (LONG)WideCharToMultiByte(CP_ACP,0,(LPWSTR)wszCLSID,-1,szclsid,CLSID_STRING_LEN,0,0); - if (!rc) return ERRSREG_CHAR_TO_MULTIBYTE; - - - sprintf(szregpath,"%s\\%s",SZREGSTR_CLSID,szclsid); - rc = findRegPath(HKEY_CLASSES_ROOT,szregpath); - if (rc) { - // delete old regentry - sprintf(szregpath,"%s",SZREGSTR_CLSID); - deleteRegPath(HKEY_CLASSES_ROOT,szregpath,szclsid); - } - - - // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO - sprintf(szregpath,"%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO); - rc = findRegPath(HKEY_LOCAL_MACHINE,szregpath); - if (rc) { - sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO,szregname); - rc = findRegPath(HKEY_LOCAL_MACHINE,szregpath); - if (rc) { - sprintf(szregpath,"%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO); - deleteRegPath(HKEY_LOCAL_MACHINE,szregpath,szregname); - } - } - - return 0; -} - - -// ------------------------------------------ -// Local Functions -// ------------------------------------------ -static LONG findRegPath (HKEY mainkey,char *szregpath) -{ - HKEY hkey; - LONG cr,rc = -1; - - if (szregpath) { - if ((cr = RegOpenKey(mainkey,szregpath,&hkey)) == ERROR_SUCCESS) { - RegCloseKey(hkey); - rc = 1; - } - else rc = 0; - } - - return rc; -} - -static LONG createRegPath (HKEY mainkey,char *szregpath,char *sznewpath) -{ - HKEY hkey,hksub; - LONG cr,rc = -1; - char newregpath[MAX_PATH_LEN]; - - sprintf(newregpath,"%s\\%s",szregpath,sznewpath); - if (!(cr = findRegPath(mainkey,newregpath))) { - if ((cr = RegOpenKey(mainkey,szregpath,&hkey)) == ERROR_SUCCESS) { - if ((cr = RegCreateKey(hkey,sznewpath,&hksub)) == ERROR_SUCCESS) { - RegCloseKey(hksub); - rc = 0; - } - RegCloseKey(hkey); - } - } - else if (cr > 0) rc = 0; - - return rc; -} - -static LONG createRegStringValue (HKEY mainkey,char *szregpath,char *valname,char *szvalstr) -{ - LONG cr,rc = -1; - HKEY hkey; - - if (szregpath) { - if ((cr = RegOpenKey(mainkey,szregpath,&hkey)) == ERROR_SUCCESS) { - cr = RegSetValueEx(hkey,(LPCTSTR)valname,0,REG_SZ,(const BYTE *)szvalstr,(DWORD)strlen(szvalstr)); - RegCloseKey(hkey); - if (cr == ERROR_SUCCESS) rc = 0; - } - } - - return rc; -} - - -static LONG getRegString (HKEY mainkey,char *szregpath,char *valname,LPVOID pval,DWORD vsize) -{ - HKEY hkey; - LONG cr,rc = -1; - DWORD hsize,htype; - - if (szregpath) { - if ((cr = RegOpenKey(mainkey,szregpath,&hkey)) == ERROR_SUCCESS) { - cr = RegQueryValueEx(hkey,valname,0,&htype,0,&hsize); - if (cr == ERROR_SUCCESS) { - if (hsize <= vsize) { - cr = RegQueryValueEx(hkey,valname,0,&htype,(LPBYTE)pval,&hsize); - rc = 0; - } - } - RegCloseKey(hkey); - } - } - return rc; -} - -static LPKEYLIST findAllSubKeys (HKEY hkey,HKEY hksub,DWORD index,char *keyname,LPKEYLIST kl) -{ - HKEY hknew = 0; - char *newkey; - LONG cr; - - if (!hksub) { - cr = RegOpenKeyEx(hkey,(LPCTSTR)keyname,0,KEY_ALL_ACCESS,&hknew); - if (cr != ERROR_SUCCESS) return kl; - } - else hknew = hksub; - - cr = RegEnumKey(hknew,index,(LPTSTR)subkeybuf,MAX_PATH_LEN); - if (cr == ERROR_SUCCESS) { - newkey = new char[strlen(subkeybuf)+1]; - strcpy(newkey,subkeybuf); - - kl = findAllSubKeys(hknew,0,0,newkey,kl); - kl = findAllSubKeys(hkey,hknew,index+1,keyname,kl); - - return kl; - - } - - if (!kl->next) { - kl->next = new KEYLIST[1]; - kl = kl->next; - kl->mainKey = hkey; - kl->subKey = hknew; - kl->keyname = keyname; - kl->next = 0; - } - - return kl; -} - -static LONG deleteRegPath (HKEY mainkey,char *szregpath,char *szdelpath) -{ - HKEY hkey; - LONG cr,rc = -1; - KEYLIST klist; - LPKEYLIST pkl,k; - char *keyname = 0; - - if ((cr = RegOpenKey(mainkey,szregpath,&hkey)) == ERROR_SUCCESS) { - - keyname = new char[strlen(szdelpath)+1]; - if (!keyname) { - RegCloseKey(hkey); - return rc; - } - strcpy(keyname,szdelpath); - klist.next = 0; - - findAllSubKeys(hkey,0,0,keyname,&klist); - - if (klist.next) { - pkl = klist.next; - - while (pkl) { - RegCloseKey(pkl->subKey); - cr = RegDeleteKey(pkl->mainKey,pkl->keyname); - delete pkl->keyname; - k = pkl; - pkl = pkl->next; - delete k; - } - rc = 0; - } - - RegCloseKey(hkey); - } - - return rc; -} - diff --git a/plugins/spu2ghz/asio/wxdebug.h b/plugins/spu2ghz/asio/wxdebug.h deleted file mode 100644 index 9273eebd52..0000000000 --- a/plugins/spu2ghz/asio/wxdebug.h +++ /dev/null @@ -1,326 +0,0 @@ -//==========================================================================; -// -// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY -// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR -// PURPOSE. -// -// Copyright (c) 1992 - 1996 Microsoft Corporation. All Rights Reserved. -// -//--------------------------------------------------------------------------; - -// Debugging facilities, January 1995 - -#ifndef __WXDEBUG__ -#define __WXDEBUG__ - -// Avoid conflict with MFC -#undef ASSERT - -// This library provides fairly straight forward debugging functionality, this -// is split into two main sections. The first is assertion handling, there are -// three types of assertions provided here. The most commonly used one is the -// ASSERT(condition) macro which will pop up a message box including the file -// and line number if the condition evaluates to FALSE. Then there is the -// EXECUTE_ASSERT macro which is the same as ASSERT except the condition will -// still be executed in NON debug builds. The final type of assertion is the -// KASSERT macro which is more suitable for pure (perhaps kernel) filters as -// the condition is printed onto the debugger rather than in a message box. -// -// The other part of the debug module facilties is general purpose logging. -// This is accessed by calling DbgLog(). The function takes a type and level -// field which define the type of informational string you are presenting and -// it's relative importance. The type field can be a combination (one or more) -// of LOG_TIMING, LOG_TRACE, LOG_MEMORY, LOG_LOCKING and LOG_ERROR. The level -// is a DWORD value where zero defines highest important. Use of zero as the -// debug logging level is to be encouraged ONLY for major errors or events as -// they will ALWAYS be displayed on the debugger. Other debug output has it's -// level matched against the current debug output level stored in the registry -// for this module and if less than the current setting it will be displayed. -// -// Each module or executable has it's own debug output level for each of the -// five types. These are read in when the DbgInitialise function is called -// for DLLs linking to STRMBASE.LIB this is done automatically when the DLL -// is loaded, executables must call it explicitely with the module instance -// handle given to them through the WINMAIN entry point. An executable must -// also call DbgTerminate when they have finished to clean up the resources -// the debug library uses, once again this is done automatically for DLLs - -// These are the five different categories of logging information - -enum { LOG_TIMING = 0x01, // Timing and performance measurements - LOG_TRACE = 0x02, // General step point call tracing - LOG_MEMORY = 0x04, // Memory and object allocation/destruction - LOG_LOCKING = 0x08, // Locking/unlocking of critical sections - LOG_ERROR = 0x10 }; // Debug error notification - -enum { CDISP_HEX = 0x01, - CDISP_DEC = 0x02}; - -// For each object created derived from CBaseObject (in debug builds) we -// create a descriptor that holds it's name (statically allocated memory) -// and a cookie we assign it. We keep a list of all the active objects -// we have registered so that we can dump a list of remaining objects - -typedef struct tag_ObjectDesc { - TCHAR *m_pName; - DWORD m_dwCookie; - tag_ObjectDesc *m_pNext; -} ObjectDesc; - -#define DLLIMPORT __declspec(dllimport) -#define DLLEXPORT __declspec(dllexport) - -#ifdef DEBUG - - #define NAME(x) TEXT(x) - - // These are used internally by the debug library (PRIVATE) - - void DbgInitKeyLevels(HKEY hKey); - void DbgInitGlobalSettings(); - void DbgInitModuleSettings(); - void DbgInitModuleName(); - DWORD DbgRegisterObjectCreation(TCHAR *pObjectName); - BOOL DbgRegisterObjectDestruction(DWORD dwCookie); - - // These are the PUBLIC entry points - - BOOL DbgCheckModuleLevel(DWORD Type,DWORD Level); - void DbgSetModuleLevel(DWORD Type,DWORD Level); - - // Initialise the library with the module handle - - void DbgInitialise(HINSTANCE hInst); - void DbgTerminate(); - - void DbgDumpObjectRegister(); - - // Display error and logging to the user - - void DbgAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); - void DbgBreakPoint(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); - void DbgKernelAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine); - void DbgLogInfo(DWORD Type,DWORD Level,const TCHAR *pFormat,...); - void DbgOutString(LPCTSTR psz); - - // Debug infinite wait stuff - DWORD DbgWaitForSingleObject(HANDLE h); - DWORD DbgWaitForMultipleObjects(DWORD nCount, - CONST HANDLE *lpHandles, - BOOL bWaitAll); - void DbgSetWaitTimeout(DWORD dwTimeout); - -#ifdef __strmif_h__ - void DisplayType(LPSTR label, const AM_MEDIA_TYPE *pmtIn); -#endif - - #define KASSERT(_x_) if (!(_x_)) \ - DbgKernelAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) - - // Break on the debugger without putting up a message box - // message goes to debugger instead - - #define KDbgBreak(_x_) \ - DbgKernelAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) - - #define ASSERT(_x_) if (!(_x_)) \ - DbgAssert(TEXT(#_x_),TEXT(__FILE__),__LINE__) - - // Put up a message box informing the user of a halt - // condition in the program - - #define DbgBreak(_x_) \ - DbgBreakPoint(TEXT(#_x_),TEXT(__FILE__),__LINE__) - - #define EXECUTE_ASSERT(_x_) ASSERT(_x_) - #define DbgLog(_x_) DbgLogInfo _x_ - - // MFC style trace macros - - #define NOTE(_x_) DbgLog((LOG_TRACE,5,TEXT(_x_))); - #define NOTE1(_x_,a) DbgLog((LOG_TRACE,5,TEXT(_x_),a)); - #define NOTE2(_x_,a,b) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b)); - #define NOTE3(_x_,a,b,c) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c)); - #define NOTE4(_x_,a,b,c,d) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c,d)); - #define NOTE5(_x_,a,b,c,d,e) DbgLog((LOG_TRACE,5,TEXT(_x_),a,b,c,d,e)); - -#else - - // Retail builds make public debug functions inert - WARNING the source - // files do not define or build any of the entry points in debug builds - // (public entry points compile to nothing) so if you go trying to call - // any of the private entry points in your source they won't compile - - #define NAME(_x_) NULL - - #define DbgInitialise(hInst) - #define DbgTerminate() - #define DbgLog(_x_) - #define DbgOutString(psz) - - #define DbgRegisterObjectCreation(pObjectName) - #define DbgRegisterObjectDestruction(dwCookie) - #define DbgDumpObjectRegister() - - #define DbgCheckModuleLevel(Type,Level) - #define DbgSetModuleLevel(Type,Level) - - #define DbgWaitForSingleObject(h) WaitForSingleObject(h, INFINITE) - #define DbgWaitForMultipleObjects(nCount, lpHandles, bWaitAll) \ - WaitForMultipleObjects(nCount, lpHandles, bWaitAll, INFINITE) - #define DbgSetWaitTimeout(dwTimeout) - - #define KDbgBreak(_x_) - #define DbgBreak(_x_) - - #define KASSERT(_x_) - #define ASSERT(_x_) - #define EXECUTE_ASSERT(_x_) _x_ - - // MFC style trace macros - - #define NOTE(_x_) - #define NOTE1(_x_,a) - #define NOTE2(_x_,a,b) - #define NOTE3(_x_,a,b,c) - #define NOTE4(_x_,a,b,c,d) - #define NOTE5(_x_,a,b,c,d,e) - - #define DisplayType(label, pmtIn) - -#endif - - -// Checks a pointer which should be non NULL - can be used as follows. - -#define CheckPointer(p,ret) {if((p)==NULL) return (ret);} - -// HRESULT Foo(VOID *pBar) -// { -// CheckPointer(pBar,E_INVALIDARG) -// } -// -// Or if the function returns a boolean -// -// BOOL Foo(VOID *pBar) -// { -// CheckPointer(pBar,FALSE) -// } - -// These validate pointers when symbol VFWROBUST is defined -// This will normally be defined in debug not retail builds - -#ifdef DEBUG - #define VFWROBUST -#endif - -#ifdef VFWROBUST - - #define ValidateReadPtr(p,cb) \ - {if(IsBadReadPtr((PVOID)p,cb) == TRUE) \ - DbgBreak("Invalid read pointer");} - - #define ValidateWritePtr(p,cb) \ - {if(IsBadWritePtr((PVOID)p,cb) == TRUE) \ - DbgBreak("Invalid write pointer");} - - #define ValidateReadWritePtr(p,cb) \ - {ValidateReadPtr(p,cb) ValidateWritePtr(p,cb)} - - #define ValidateStringPtr(p) \ - {if(IsBadStringPtr((LPCTSTR)p,INFINITE) == TRUE) \ - DbgBreak("Invalid string pointer");} - - #define ValidateStringPtrA(p) \ - {if(IsBadStringPtrA((LPCSTR)p,INFINITE) == TRUE) \ - DbgBreak("Invalid ANSII string pointer");} - - #define ValidateStringPtrW(p) \ - {if(IsBadStringPtrW((LPCWSTR)p,INFINITE) == TRUE) \ - DbgBreak("Invalid UNICODE string pointer");} - -#else - #define ValidateReadPtr(p,cb) - #define ValidateWritePtr(p,cb) - #define ValidateReadWritePtr(p,cb) - #define ValidateStringPtr(p) - #define ValidateStringPtrA(p) - #define ValidateStringPtrW(p) -#endif - - -#ifdef _OBJBASE_H_ - - // Outputting GUID names. If you want to include the name - // associated with a GUID (eg CLSID_...) then - // - // GuidNames[yourGUID] - // - // Returns the name defined in uuids.h as a string - - typedef struct { - TCHAR *szName; - GUID guid; - } GUID_STRING_ENTRY; - - class CGuidNameList { - public: - TCHAR *operator [] (const GUID& guid); - }; - - extern CGuidNameList GuidNames; - -#endif - - -// REMIND macro - generates warning as reminder to complete coding -// (eg) usage: -// -// #pragma message (REMIND("Add automation support")) - - -#define QUOTE(x) #x -#define QQUOTE(y) QUOTE(y) -#define REMIND(str) __FILE__ "(" QQUOTE(__LINE__) ") : " str - - -// Hack to display objects in a useful format -// -// eg If you want to display a LONGLONG ll in a debug string do (eg) -// -// DbgLog((LOG_TRACE, n, TEXT("Value is %s"), (LPCTSTR)CDisp(ll, CDISP_HEX))); - - -class CDispBasic -{ -public: - CDispBasic() { m_pString = m_String; }; - ~CDispBasic(); -protected: - PTCHAR m_pString; // normally points to m_String... unless too much data - TCHAR m_String[50]; -}; -class CDisp : public CDispBasic -{ -public: - CDisp(LONGLONG ll, int Format = CDISP_HEX); // Display a LONGLONG in CDISP_HEX or CDISP_DEC form - CDisp(REFCLSID clsid); // Display a GUID - CDisp(double d); // Display a floating point number -#ifdef __strmif_h__ -#ifdef __STREAMS__ - CDisp(CRefTime t); // Display a Reference Time -#endif - CDisp(IPin *pPin); // Display a pin as {filter clsid}(pin name) -#endif // __strmif_h__ - ~CDisp(); - - // Implement cast to (LPCTSTR) as parameter to logger - operator LPCTSTR() - { - return (LPCTSTR)m_pString; - }; -}; - -#endif // __WXDEBUG__ - diff --git a/plugins/spu2ghz/config.cpp b/plugins/spu2ghz/config.cpp index ffd1b6a8e6..35dbed8505 100644 --- a/plugins/spu2ghz/config.cpp +++ b/plugins/spu2ghz/config.cpp @@ -102,7 +102,6 @@ int LimitMode=0; CONFIG_DSOUNDOUT Config_DSoundOut; CONFIG_DSOUND51 Config_DSound51; CONFIG_WAVEOUT Config_WaveOut; -CONFIG_ASIO Config_Asio; // MISC bool LimiterToggleEnabled=false; @@ -300,9 +299,6 @@ void ReadSettings() Config_DSound51.AddCLR =CfgReadInt("DSOUND51","Channel_Center_In_LR", 56); Config_DSound51.LowpassLFE = CfgReadInt("DSOUND51","LFE_Lowpass_Frequency", 80); - // Read ASIOOUT config: - CfgReadStr("ASIO","Asio_Driver_Name",AsioDriver,128,""); - // Sanity Checks // ------------- @@ -398,8 +394,6 @@ void WriteSettings() CfgWriteInt("DSOUND51","Channel_Center_In_LR", Config_DSound51.AddCLR); CfgWriteInt("DSOUND51","LFE_Lowpass_Frequency", Config_DSound51.LowpassLFE); - CfgWriteStr("ASIO","Asio_Driver_Name",AsioDriver); - CfgWriteStr("DSP PLUGIN","Filename",dspPlugin); CfgWriteInt("DSP PLUGIN","ModuleNum",dspPluginModule); CfgWriteBool("DSP PLUGIN","Enabled",dspPluginEnabled); diff --git a/plugins/spu2ghz/config.h b/plugins/spu2ghz/config.h index 27b5722b05..036d009d9b 100644 --- a/plugins/spu2ghz/config.h +++ b/plugins/spu2ghz/config.h @@ -154,22 +154,10 @@ struct CONFIG_DSOUND51 } }; -struct CONFIG_ASIO -{ - s8 NumBuffers; - - CONFIG_ASIO() : - NumBuffers( 8 ) - { - //memset( Device, 0, sizeof( Device ) ); - } -}; - extern CONFIG_DSOUNDOUT Config_DSoundOut; extern CONFIG_DSOUND51 Config_DSound51; extern CONFIG_WAVEOUT Config_WaveOut; -extern CONFIG_ASIO Config_Asio; ////// diff --git a/plugins/spu2ghz/spu2.cpp b/plugins/spu2ghz/spu2.cpp index 77401fe43e..2b2d6756bb 100644 --- a/plugins/spu2ghz/spu2.cpp +++ b/plugins/spu2ghz/spu2.cpp @@ -154,7 +154,7 @@ static void InitLibraryName() // Use TortoiseSVN's SubWCRev utility's output // to label the specific revision: - sprintf_s( libraryName, "SPU2ghz PPr %d%s" + sprintf_s( libraryName, "SPU2ghz PG r%d%s" # ifdef _DEBUG_FAST "-Debug" # elif defined( _DEBUG ) diff --git a/plugins/spu2ghz/xaudio2out.cpp b/plugins/spu2ghz/xaudio2out.cpp index 1cda9714d1..211b63b418 100644 --- a/plugins/spu2ghz/xaudio2out.cpp +++ b/plugins/spu2ghz/xaudio2out.cpp @@ -66,7 +66,7 @@ private: XAUDIO2_BUFFER buf = {0}; buf.AudioBytes = BufferSizeBytes; - buf.pAudioData=(const BYTE*)context; + buf.pAudioData=(BYTE*)context; buf.pContext=context; pSourceVoice->SubmitSourceBuffer( &buf ); diff --git a/plugins/zerogs/dx/GSmain.cpp b/plugins/zerogs/dx/GSmain.cpp index b9d882035b..7add8e984a 100644 --- a/plugins/zerogs/dx/GSmain.cpp +++ b/plugins/zerogs/dx/GSmain.cpp @@ -73,22 +73,18 @@ unsigned char revision = 0; // revision and build gives plugin version unsigned char build = VER; unsigned char minor = 1; -// NOTE : ZeroGS is currently very evil and uses the libraryName as a versioning tool in -// its savestate information. So putting the revision info into the libraryName isn't -// going to be a good idea for now. :( - #ifdef _DEBUG -char *libraryName = "ZeroGS (Debug) "; +char *libraryName = "ZeroGS Playground (Debug) "; #elif defined(RELEASE_TO_PUBLIC) #ifdef ZEROGS_SSE2 -char *libraryName = "ZeroGS KOSMOS"; +char *libraryName = "ZeroGS Playground"; #else -char *libraryName = "ZeroGS KOSMOS (no SSE2)"; +char *libraryName = "ZeroGS Playground (no SSE2)"; #endif #else -char *libraryName = "ZeroGS (Dev) "; +char *libraryName = "ZeroGS Playground (Dev) "; #endif static const char* s_aa[5] = { "AA none |", "AA 2x |", "AA 4x |", "AA 8x", "AA 16x" }; diff --git a/plugins/zerogs/dx/Win32/GSsoftdx.def b/plugins/zerogs/dx/Win32/GSsoftdx.def index e1040cb155..8ca92c5cf0 100644 --- a/plugins/zerogs/dx/Win32/GSsoftdx.def +++ b/plugins/zerogs/dx/Win32/GSsoftdx.def @@ -1,7 +1,6 @@ ; Declares the module parameters for the DLL. LIBRARY "ZeroGS" -DESCRIPTION 'ZeroGS dll' EXPORTS ; Explicit exports can go here diff --git a/plugins/zerogs/dx/Win32/zerogs_2008.vcproj b/plugins/zerogs/dx/Win32/zerogs_2008.vcproj index e562535ded..f5fea4c018 100644 --- a/plugins/zerogs/dx/Win32/zerogs_2008.vcproj +++ b/plugins/zerogs/dx/Win32/zerogs_2008.vcproj @@ -2,7 +2,7 @@