diff dynamin/c/portaudio.d @ 0:aa4efef0f0b1

Initial commit of code.
author Jordan Miner <jminer7@gmail.com>
date Mon, 15 Jun 2009 22:10:48 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dynamin/c/portaudio.d	Mon Jun 15 22:10:48 2009 -0500
@@ -0,0 +1,292 @@
+module dynamin.c.portaudio;
+
+/*
+ * A complete binding to the core of the PortAudio library v19.
+ */
+
+version(build) { pragma(link, portaudio); }
+
+extern(C):
+
+int Pa_GetVersion();
+
+char* Pa_GetVersionText();
+
+alias int PaError;
+
+alias int PaErrorCode;
+enum : PaErrorCode {
+	paNoError = 0,
+
+	paNotInitialized = -10000,
+	paUnanticipatedHostError,
+	paInvalidChannelCount,
+	paInvalidSampleRate,
+	paInvalidDevice,
+	paInvalidFlag,
+	paSampleFormatNotSupported,
+	paBadIODeviceCombination,
+	paInsufficientMemory,
+	paBufferTooBig,
+	paBufferTooSmall,
+	paNullCallback,
+	paBadStreamPtr,
+	paTimedOut,
+	paInternalError,
+	paDeviceUnavailable,
+	paIncompatibleHostApiSpecificStreamInfo,
+	paStreamIsStopped,
+	paStreamIsNotStopped,
+	paInputOverflowed,
+	paOutputUnderflowed,
+	paHostApiNotFound,
+	paInvalidHostApi,
+	paCanNotReadFromACallbackStream,
+	paCanNotWriteToACallbackStream,
+	paCanNotReadFromAnOutputOnlyStream,
+	paCanNotWriteToAnInputOnlyStream,
+	paIncompatibleStreamHostApi,
+	paBadBufferPtr
+}
+
+char* Pa_GetErrorText(PaError errorCode);
+
+PaError Pa_Initialize();
+
+PaError Pa_Terminate();
+
+alias int PaDeviceIndex;
+
+enum : PaDeviceIndex {
+	paNoDevice = -1,
+	paUseHostApiSpecificDeviceSpecification  = -2
+}
+
+alias int PaHostApiIndex;
+
+PaHostApiIndex Pa_GetHostApiCount();
+
+PaHostApiIndex Pa_GetDefaultHostApi();
+
+alias int PaHostApiTypeId;
+enum : PaHostApiTypeId {
+	paInDevelopment = 0,
+	paDirectSound = 1,
+	paMME = 2,
+	paASIO = 3,
+	paSoundManager = 4,
+	paCoreAudio = 5,
+	paOSS = 7,
+	paALSA = 8,
+	paAL = 9,
+	paBeOS = 10,
+	paWDMKS = 11,
+	paJACK = 12,
+	paWASAPI = 13,
+	paAudioScienceHPI = 14
+}
+
+struct PaHostApiInfo {
+	int structVersion;
+	PaHostApiTypeId type;
+	char* name;
+
+	int deviceCount;
+
+	PaDeviceIndex defaultInputDevice;
+
+	PaDeviceIndex defaultOutputDevice;
+
+}
+
+PaHostApiInfo* Pa_GetHostApiInfo(PaHostApiIndex hostApi);
+
+PaHostApiIndex Pa_HostApiTypeIdToHostApiIndex(PaHostApiTypeId type);
+
+PaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex(
+	PaHostApiIndex hostApi,
+	int hostApiDeviceIndex);
+
+struct PaHostErrorInfo {
+	PaHostApiTypeId hostApiType;
+	int errorCode;
+	char* errorText;
+}
+
+
+PaHostErrorInfo* Pa_GetLastHostErrorInfo();
+
+PaDeviceIndex Pa_GetDeviceCount();
+
+PaDeviceIndex Pa_GetDefaultInputDevice();
+
+PaDeviceIndex Pa_GetDefaultOutputDevice();
+
+alias double PaTime;
+
+alias uint PaSampleFormat;
+
+enum : PaSampleFormat {
+	paFloat32        = 0x00000001,
+	paInt32          = 0x00000002,
+	paInt24          = 0x00000004,
+	paInt16          = 0x00000008,
+	paInt8           = 0x00000010,
+	paUInt8          = 0x00000020,
+	paCustomFormat   = 0x00010000,
+
+	paNonInterleaved = 0x80000000
+}
+
+struct PaDeviceInfo {
+	int structVersion;
+	char* name;
+	PaHostApiIndex hostApi;
+
+	int maxInputChannels;
+	int maxOutputChannels;
+
+	PaTime defaultLowInputLatency;
+	PaTime defaultLowOutputLatency;
+	PaTime defaultHighInputLatency;
+	PaTime defaultHighOutputLatency;
+
+	double defaultSampleRate;
+}
+
+PaDeviceInfo* Pa_GetDeviceInfo(PaDeviceIndex device);
+
+struct PaStreamParameters {
+	PaDeviceIndex device;
+
+	int channelCount;
+
+	PaSampleFormat sampleFormat;
+
+	PaTime suggestedLatency;
+
+	void* hostApiSpecificStreamInfo;
+}
+
+const paFormatIsSupported = 0;
+
+PaError Pa_IsFormatSupported(
+	PaStreamParameters* inputParameters,
+	PaStreamParameters* outputParameters,
+	double sampleRate);
+
+alias void PaStream;
+
+const paFramesPerBufferUnspecified = 0;
+
+alias uint PaStreamFlags;
+enum : PaStreamFlags {
+	paNoFlag                = 0,
+	paClipOff               = 0x00000001,
+	paDitherOff             = 0x00000002,
+	paNeverDropInput        = 0x00000004,
+	paPrimeOutputBuffersUsingStreamCallback = 0x00000008,
+	paPlatformSpecificFlags = 0xFFFF0000
+}
+
+struct PaStreamCallbackTimeInfo {
+	PaTime inputBufferAdcTime;
+	PaTime currentTime;
+	PaTime outputBufferDacTime;
+}
+
+alias uint PaStreamCallbackFlags;
+enum : PaStreamCallbackFlags {
+	paInputUnderflow  = 0x00000001,
+	paInputOverflow   = 0x00000002,
+	paOutputUnderflow = 0x00000004,
+	paOutputOverflow  = 0x00000008,
+	paPrimingOutput   = 0x00000010
+}
+
+alias uint PaStreamCallbackResult;
+enum : PaStreamCallbackResult {
+	paContinue = 0,
+	paComplete = 1,
+	paAbort = 2
+}
+
+alias int function(
+	void* input, void* output,
+	uint frameCount,
+	PaStreamCallbackTimeInfo* timeInfo,
+	PaStreamCallbackFlags statusFlags,
+	void* userData) PaStreamCallback;
+
+PaError Pa_OpenStream(
+	PaStream** stream,
+	PaStreamParameters* inputParameters,
+	PaStreamParameters* outputParameters,
+	double sampleRate,
+	uint framesPerBuffer,
+	PaStreamFlags streamFlags,
+	PaStreamCallback streamCallback,
+	void* userData);
+
+PaError Pa_OpenDefaultStream(
+	PaStream** stream,
+	int numInputChannels,
+	int numOutputChannels,
+	PaSampleFormat sampleFormat,
+	double sampleRate,
+	uint framesPerBuffer,
+	PaStreamCallback streamCallback,
+	void* userData);
+
+PaError Pa_CloseStream(PaStream* stream);
+
+alias void function(void* userData) PaStreamFinishedCallback;
+
+PaError Pa_SetStreamFinishedCallback(
+	PaStream* stream, PaStreamFinishedCallback streamFinishedCallback);
+
+PaError Pa_StartStream(PaStream* stream);
+
+PaError Pa_StopStream(PaStream* stream);
+
+PaError Pa_AbortStream(PaStream* stream);
+
+PaError Pa_IsStreamStopped(PaStream* stream);
+
+PaError Pa_IsStreamActive(PaStream* stream);
+
+struct PaStreamInfo {
+	int structVersion;
+
+	PaTime inputLatency;
+
+	PaTime outputLatency;
+
+	double sampleRate;
+}
+
+PaStreamInfo* Pa_GetStreamInfo(PaStream* stream);
+
+PaTime Pa_GetStreamTime(PaStream* stream);
+
+double Pa_GetStreamCpuLoad(PaStream* stream);
+
+PaError Pa_ReadStream(
+	PaStream* stream,
+	void* buffer,
+	uint frames);
+
+
+PaError Pa_WriteStream(
+	PaStream* stream,
+	void* buffer,
+	uint frames);
+
+int Pa_GetStreamReadAvailable(PaStream* stream);
+
+int Pa_GetStreamWriteAvailable(PaStream* stream);
+
+PaError Pa_GetSampleSize(PaSampleFormat format);
+
+void Pa_Sleep(long msec);
+