view dstep/coreaudio/AudioHardwarePlugIn.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Sep 30, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.coreaudio.AudioHardwarePlugIn;

import dstep.coreaudio.AudioHardware;
import dstep.coreaudio.CoreAudioTypes;
import dstep.corefoundation.CFPlugInCOM;
import dstep.corefoundation.CoreFoundation;
import dstep.coreservices.carboncore.MacTypes;

alias AudioHardwarePlugInInterface** AudioHardwarePlugInRef;

struct AudioHardwarePlugInInterface
{
	void* _reserved;
	
	extern (C)
	{
		HRESULT function (void* inSelf, REFIID inUUID, LPVOID* outInterface) QueryInterface;
		ULONG function (void* inSelf) AddRef;
		ULONG function (void* inSelf) Release;
		OSStatus function (AudioHardwarePlugInRef inSelf) Initialize;
		OSStatus function (AudioHardwarePlugInRef inSelf) Teardown;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioDeviceIOProc inProc, void* inClientData) DeviceAddIOProc;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioDeviceIOProc inProc) DeviceRemoveIOProc;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioDeviceIOProcID inProc) DeviceStart;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioDeviceIOProcID inProc) DeviceStop;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioTimeStamp inStartTime, AudioBufferList* outData) DeviceRead;		
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioTimeStamp* outTime) DeviceGetCurrentTime;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioTimeStamp* inTime, AudioTimeStamp* outTime) DeviceTranslateTime;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, uint inChannel, bool isInput, AudioDevicePropertyID inPropertyID, uint* outSize, bool* outWritable) DeviceGetPropertyInfo;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, uint inChannel, bool isInput, AudioDevicePropertyID inPropertyID, uint* ioPropertyDataSize, void* outPropertyData) DeviceGetProperty;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, uint inChannel, bool isInput, AudioDevicePropertyID inPropertyID, uint inPropertyDataSize, void* inPropertyData) DeviceSetProperty;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioStreamID inStream, uint inChannel, AudioDevicePropertyID inPropertyID, uint outSize, bool* outWritable) StreamGetPropertyInfo;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioStreamID inStream, uint inChannel, AudioDevicePropertyID inPropertyID, uint* inPropertyDataSize, void* outPropertyData) StreamGetProperty;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioStreamID inStream, uint inChannel, AudioDevicePropertyID inPropertyID, uint inPropertyDataSize, void* inPropertyData) StreamSetProperty;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioDeviceIOProc inProc, AudioTimeStamp* ioRequestedStartTime, uint inFlags) DeviceStartAtTime;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioTimeStamp* ioRequestedStartTime, uint inFlags) DeviceGetNearestStartTime;		
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioObjectID inObjectID) InitializeWithObjectID;		
		void function (AudioHardwarePlugInRef inSelf, AudioObjectID inObjectID) ObjectShow;
		bool function (AudioHardwarePlugInRef inSelf, AudioObjectID inObjectID, AudioObjectPropertyAddress* inAddress) ObjectHasProperty;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioObjectID inObjectID, AudioObjectPropertyAddress* inAddress, bool* outIsSettable) ObjectIsPropertySettable;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioObjectID inObjectID, AudioObjectPropertyAddress* inAddress, uint inQualifierDataSize, void* inQualifierData, uint* outDataSize) ObjectGetPropertyDataSize;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioObjectID inObjectID, AudioObjectPropertyAddress* inAddress, uint inQualifierDataSize, void* inQualifierData, uint* ioDataSize, void* outData) ObjectGetPropertyData;		
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioObjectID inObjectID, AudioObjectPropertyAddress* inAddress, uint inQualifierDataSize, void* inQualifierData, uint inDataSize, void* inData) ObjectSetPropertyData;		
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioDeviceIOProc inProc, void* inClientData, AudioDeviceIOProcID* outIOProcID) DeviceCreateIOProcID;
		OSStatus function (AudioHardwarePlugInRef inSelf, AudioDeviceID inDevice, AudioDeviceIOProcID inIOProcID) DeviceDestroyIOProcID;
	}	
}

extern (C)
{
	int AudioObjectCreate (AudioHardwarePlugInRef inOwningPlugIn, uint inOwningObjectID, uint inClassID, AudioObjectID* outAudioObjectID);
	int AudioObjectsPublishedAndDied (AudioHardwarePlugInRef inOwningPlugIn, uint inOwningObjectID, uint inNumberPublishedAudioObjects, AudioObjectID* inPublishedAudioObjects, uint inNumberDeadAudioObjects, AudioObjectID* inDeadAudioObjects);
	int AudioObjectPropertiesChanged (AudioHardwarePlugInRef inOwningPlugIn, uint inObjectID, uint inNumberAddresses, AudioObjectPropertyAddress* inAddresses);
	int AudioHardwareClaimAudioDeviceID (AudioHardwarePlugInRef inOwner, AudioDeviceID* outAudioDeviceID);
	int AudioHardwareDevicesCreated (AudioHardwarePlugInRef inOwner, uint inNumberDevices, AudioDeviceID* inAudioDeviceIDs);
	int AudioHardwareDevicesDied (AudioHardwarePlugInRef inOwner, uint inNumberDevices, AudioDeviceID* inAudioDeviceIDs);
	int AudioHardwareDevicePropertyChanged (AudioHardwarePlugInRef inOwner, uint inDeviceID, uint inChannel, ubyte isInput, uint inPropertyID);
	int AudioHardwareClaimAudioStreamID (AudioHardwarePlugInRef inOwner, uint inOwningDeviceID, AudioStreamID* outAudioStreamID);
	int AudioHardwareStreamsCreated (AudioHardwarePlugInRef inOwner, uint inOwningDeviceID, uint inNumberStreams, AudioStreamID* inAudioStreamIDs);
	int AudioHardwareStreamsDied (AudioHardwarePlugInRef inOwner, uint inOwningDeviceID, uint inNumberStreams, AudioStreamID* inAudioStreamIDs);
	int AudioHardwareStreamPropertyChanged (AudioHardwarePlugInRef inOwner, uint inOwningDeviceID, uint inStreamID, uint inChannel, uint inPropertyID);
}