mirror of https://github.com/PCSX2/pcsx2.git
77 lines
2.1 KiB
C
77 lines
2.1 KiB
C
|
/*
|
||
|
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 <windows.h>
|
||
|
#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
|