asiodrvr.h 2.2 KB

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