--- /dev/null
+/*\r
+ Steinberg Audio Stream I/O API\r
+ (c) 1996, Steinberg Soft- und Hardware GmbH\r
+ charlie (May 1996)\r
+\r
+ asiodrvr.h\r
+ c++ superclass to implement asio functionality. from this,\r
+ you can derive whatever required\r
+*/\r
+\r
+#ifndef _asiodrvr_\r
+#define _asiodrvr_\r
+\r
+// cpu and os system we are running on\r
+#include "asiosys.h"\r
+// basic "C" interface\r
+#include "asio.h"\r
+\r
+class AsioDriver;\r
+extern AsioDriver *getDriver(); // for generic constructor \r
+\r
+#if WINDOWS\r
+#include <windows.h>\r
+#include "combase.h"\r
+#include "iasiodrv.h"\r
+class AsioDriver : public IASIO ,public CUnknown\r
+{\r
+public:\r
+ AsioDriver(LPUNKNOWN pUnk, HRESULT *phr);\r
+\r
+ DECLARE_IUNKNOWN\r
+ // Factory method\r
+ static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);\r
+ // IUnknown\r
+ virtual HRESULT STDMETHODCALLTYPE NonDelegatingQueryInterface(REFIID riid,void **ppvObject);\r
+\r
+#else\r
+\r
+class AsioDriver\r
+{\r
+public:\r
+ AsioDriver();\r
+#endif\r
+ virtual ~AsioDriver();\r
+\r
+ virtual ASIOBool init(void* sysRef);\r
+ virtual void getDriverName(char *name); // max 32 bytes incl. terminating zero\r
+ virtual long getDriverVersion();\r
+ virtual void getErrorMessage(char *string); // max 124 bytes incl.\r
+\r
+ virtual ASIOError start();\r
+ virtual ASIOError stop();\r
+\r
+ virtual ASIOError getChannels(long *numInputChannels, long *numOutputChannels);\r
+ virtual ASIOError getLatencies(long *inputLatency, long *outputLatency);\r
+ virtual ASIOError getBufferSize(long *minSize, long *maxSize,\r
+ long *preferredSize, long *granularity);\r
+\r
+ virtual ASIOError canSampleRate(ASIOSampleRate sampleRate);\r
+ virtual ASIOError getSampleRate(ASIOSampleRate *sampleRate);\r
+ virtual ASIOError setSampleRate(ASIOSampleRate sampleRate);\r
+ virtual ASIOError getClockSources(ASIOClockSource *clocks, long *numSources);\r
+ virtual ASIOError setClockSource(long reference);\r
+\r
+ virtual ASIOError getSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp);\r
+ virtual ASIOError getChannelInfo(ASIOChannelInfo *info);\r
+\r
+ virtual ASIOError createBuffers(ASIOBufferInfo *bufferInfos, long numChannels,\r
+ long bufferSize, ASIOCallbacks *callbacks);\r
+ virtual ASIOError disposeBuffers();\r
+\r
+ virtual ASIOError controlPanel();\r
+ virtual ASIOError future(long selector, void *opt);\r
+ virtual ASIOError outputReady();\r
+};\r
+#endif\r