Replace convertBufferWasapi with new WasapiResampler
[rtaudio-cdist.git] / include / asiodrvr.h
1 /*\r
2         Steinberg Audio Stream I/O API\r
3         (c) 1996, Steinberg Soft- und Hardware GmbH\r
4         charlie (May 1996)\r
5 \r
6         asiodrvr.h\r
7         c++ superclass to implement asio functionality. from this,\r
8         you can derive whatever required\r
9 */\r
10 \r
11 #ifndef _asiodrvr_\r
12 #define _asiodrvr_\r
13 \r
14 // cpu and os system we are running on\r
15 #include "asiosys.h"\r
16 // basic "C" interface\r
17 #include "asio.h"\r
18 \r
19 class AsioDriver;\r
20 extern AsioDriver *getDriver();         // for generic constructor \r
21 \r
22 #if WINDOWS\r
23 #include <windows.h>\r
24 #include "combase.h"\r
25 #include "iasiodrv.h"\r
26 class AsioDriver : public IASIO ,public CUnknown\r
27 {\r
28 public:\r
29         AsioDriver(LPUNKNOWN pUnk, HRESULT *phr);\r
30 \r
31         DECLARE_IUNKNOWN\r
32         // Factory method\r
33         static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);\r
34         // IUnknown\r
35         virtual HRESULT STDMETHODCALLTYPE NonDelegatingQueryInterface(REFIID riid,void **ppvObject);\r
36 \r
37 #else\r
38 \r
39 class AsioDriver\r
40 {\r
41 public:\r
42         AsioDriver();\r
43 #endif\r
44         virtual ~AsioDriver();\r
45 \r
46         virtual ASIOBool init(void* sysRef);\r
47         virtual void getDriverName(char *name); // max 32 bytes incl. terminating zero\r
48         virtual long getDriverVersion();\r
49         virtual void getErrorMessage(char *string);     // max 124 bytes incl.\r
50 \r
51         virtual ASIOError start();\r
52         virtual ASIOError stop();\r
53 \r
54         virtual ASIOError getChannels(long *numInputChannels, long *numOutputChannels);\r
55         virtual ASIOError getLatencies(long *inputLatency, long *outputLatency);\r
56         virtual ASIOError getBufferSize(long *minSize, long *maxSize,\r
57                 long *preferredSize, long *granularity);\r
58 \r
59         virtual ASIOError canSampleRate(ASIOSampleRate sampleRate);\r
60         virtual ASIOError getSampleRate(ASIOSampleRate *sampleRate);\r
61         virtual ASIOError setSampleRate(ASIOSampleRate sampleRate);\r
62         virtual ASIOError getClockSources(ASIOClockSource *clocks, long *numSources);\r
63         virtual ASIOError setClockSource(long reference);\r
64 \r
65         virtual ASIOError getSamplePosition(ASIOSamples *sPos, ASIOTimeStamp *tStamp);\r
66         virtual ASIOError getChannelInfo(ASIOChannelInfo *info);\r
67 \r
68         virtual ASIOError createBuffers(ASIOBufferInfo *bufferInfos, long numChannels,\r
69                 long bufferSize, ASIOCallbacks *callbacks);\r
70         virtual ASIOError disposeBuffers();\r
71 \r
72         virtual ASIOError controlPanel();\r
73         virtual ASIOError future(long selector, void *opt);\r
74         virtual ASIOError outputReady();\r
75 };\r
76 #endif\r