1/* 2 * Copyright (c) 1998-2014 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * The contents of this file constitute Original Code as defined in and 7 * are subject to the Apple Public Source License Version 1.1 (the 8 * "License"). You may not use this file except in compliance with the 9 * License. Please obtain a copy of the License at 10 * http://www.apple.com/publicsource and read it before using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17 * License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * @APPLE_LICENSE_HEADER_END@ 21 */ 22 23#ifndef _IOKIT_IOAUDIOENGINEUSERCLIENT_H 24#define _IOKIT_IOAUDIOENGINEUSERCLIENT_H 25 26#include <IOKit/IOUserClient.h> 27#include <AvailabilityMacros.h> 28 29#ifndef IOAUDIOFAMILY_SELF_BUILD 30#include <IOKit/audio/IOAudioEngine.h> 31#include <IOKit/audio/IOAudioTypes.h> 32#else 33#include "IOAudioEngine.h" 34#include "IOAudioTypes.h" 35#endif 36#include <IOKit/IOBufferMemoryDescriptor.h> 37 38class IOAudioEngine; 39class IOAudioStream; 40class IOMemoryDescriptor; 41class IOCommandGate; 42class IOWorkLoop; 43 44class IOAudioEngineUserClient; 45class IOAudioClientBufferSet; 46struct IOAudioFormatNotification; 47 48typedef struct IOAudioClientBuffer 49{ 50 IOAudioEngineUserClient *userClient; 51 IOAudioStream *audioStream; 52 void *sourceBuffer; 53 IOMemoryDescriptor *sourceBufferDescriptor; 54 IOMemoryMap *sourceBufferMap; 55 void *unmappedSourceBuffer; 56 UInt32 numSampleFrames; 57 UInt32 numChannels; 58 IOAudioEnginePosition mixedPosition; 59 struct IOAudioClientBuffer *mNextBuffer32; 60 struct IOAudioClientBuffer *nextClip; 61 struct IOAudioClientBuffer *previousClip; 62 struct IOAudioClientBuffer *nextClient; 63 IOAudioBufferDataDescriptor *bufferDataDescriptor; 64} IOAudioClientBuffer; 65 66/* IOAudioClientBuffer64 added for binary compatibility with old PPC drivers covered by <rdar://problem/4651809> */ 67typedef struct IOAudioClientBuffer64 68{ 69 IOAudioClientBuffer mAudioClientBuffer32; 70 mach_vm_address_t mUnmappedSourceBuffer64; 71 struct IOAudioClientBuffer64 *mNextBuffer64; 72} IOAudioClientBuffer64; 73 74typedef struct IOAudioClientBufferExtendedInfo 75{ 76 // Added stuff for registerClientParameterBuffer 77 UInt32 bufferSetID; 78 void *paramBuffer; 79 IOMemoryDescriptor *paramBufferDescriptor; 80 IOMemoryMap *paramBufferMap; 81 void *unmappedParamBuffer; 82 struct IOAudioClientBufferExtendedInfo *mNextExtended; 83} IOAudioClientBufferExtendedInfo; 84 85/* IOAudioClientBufferExtendedInfo64 added for binary compatibility with old PPC drivers covered by <rdar://problem/4651809> */ 86typedef struct IOAudioClientBufferExtendedInfo64 87{ 88 IOAudioClientBufferExtendedInfo mAudioClientBufferExtended32; 89 mach_vm_address_t mUnmappedParamBuffer64; 90 struct IOAudioClientBufferExtendedInfo64 *mNextExtended64; 91} IOAudioClientBufferExtendedInfo64; 92 93 94class IOAudioEngineUserClient : public IOUserClient 95{ 96 OSDeclareDefaultStructors(IOAudioEngineUserClient) 97 98 friend class IOAudioEngine; 99 friend class IOAudioClientBufferSet; 100 friend class IOAudioStream; 101 102protected: 103 IOAudioEngine *audioEngine; 104 105 IOWorkLoop *workLoop; 106 IOCommandGate *commandGate; 107 108 IOExternalMethod old_methods[5]; // It's size can't be changed for binary compatibility reasons, no longer used. 109 IOExternalTrap trap; 110 111 task_t clientTask; 112 UInt32 numSampleFrames; // Never used... 113 114 IOAudioClientBufferSet *clientBufferSetList; 115 IORecursiveLock *clientBufferLock; 116 117 IOAudioNotificationMessage *notificationMessage; 118 119 bool online; 120 121protected: 122 struct ExpansionData { 123 IOAudioClientBufferExtendedInfo64 *extendedInfo; 124 IOExternalMethod methods[kIOAudioEngineNumCalls]; // This size can be changed, this is the new methods pointer 125 UInt32 classicMode; 126 UInt32 commandGateStatus; // <rdar://8518215> 127 SInt32 commandGateUsage; // <rdar://8518215> 128 }; 129 130// <rdar://101000004> START 131 ExpansionData *reserved; 132 133public: 134 virtual IOReturn externalMethod( uint32_t selector, IOExternalMethodArguments * arguments, IOExternalMethodDispatch * dispatch, 135 OSObject * target, void * reference) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 136 // New code added here... 137 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 0); 138 virtual IOReturn registerClientParameterBuffer (void * parameterBuffer, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // unused function 139 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 1); 140 virtual IOAudioClientBufferExtendedInfo * findExtendedInfo(UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 141 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 2); 142 virtual IOReturn getNearestStartTime(IOAudioStream *audioStream, IOAudioTimeStamp *ioTimeStamp, UInt32 isInput) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 143 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 3); 144 virtual IOReturn getClientNearestStartTime(IOAudioStream *audioStream, IOAudioTimeStamp *ioTimeStamp, UInt32 isInput) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 145 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 4); 146 virtual IOReturn safeRegisterClientBuffer(UInt32 audioStreamIndex, void * sourceBuffer, UInt32 bufSizeInBytes, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 147 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 5); 148 virtual bool initWithAudioEngine(IOAudioEngine *engine, task_t task, void *securityToken, UInt32 type, OSDictionary *properties) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 149 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 6); <rdar://problems/5321701> 150 virtual IOReturn safeRegisterClientBuffer64(UInt32 audioStreamIndex, mach_vm_address_t * sourceBuffer, UInt32 bufSizeInBytes, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 151 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 7); <rdar://problems/5321701> 152 virtual IOReturn registerClientBuffer64(IOAudioStream *audioStream, mach_vm_address_t sourceBuffer, UInt32 bufSizeInBytes, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 153 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 8); <rdar://problems/5321701> 154 virtual IOReturn registerBuffer64(IOAudioStream *audioStream, mach_vm_address_t sourceBuffer, UInt32 bufSizeInBytes, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 155 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 9); <rdar://problems/5321701> 156 virtual IOReturn unregisterBuffer64(mach_vm_address_t sourceBuffer, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 157 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 10); <rdar://problems/5321701> 158 virtual IOReturn unregisterClientBuffer64(mach_vm_address_t * sourceBuffer, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 159 // OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 11); <rdar://problems/5321701> 160 virtual IOAudioClientBufferExtendedInfo64 * findExtendedInfo64(UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 161 162 163 164private: 165 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 0); 166 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 1); 167 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 2); 168 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 3); 169 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 4); 170 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 5); 171 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 6); 172 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 7); 173 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 8); 174 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 9); 175 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 10); 176 OSMetaClassDeclareReservedUsed(IOAudioEngineUserClient, 11); 177 178 179 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 12); 180 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 13); 181 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 14); 182 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 15); 183 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 16); 184 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 17); 185 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 18); 186 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 19); 187 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 20); 188 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 21); 189 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 22); 190 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 23); 191 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 24); 192 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 25); 193 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 26); 194 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 27); 195 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 28); 196 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 29); 197 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 30); 198 OSMetaClassDeclareReservedUnused(IOAudioEngineUserClient, 31); 199 200protected: 201 virtual IOReturn clientClose() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 202 virtual IOReturn clientDied() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 203 204 static IOReturn _closeClientAction(OSObject *target, void *arg0, void *arg1, void *arg2, void *arg3) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://7529580> 205 static IOReturn closeClientAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 206 virtual IOReturn closeClient() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 207 208 209 virtual IOReturn clientMemoryForType(UInt32 type, UInt32 *flags, IOMemoryDescriptor **memory) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 210 virtual IOExternalMethod *getExternalMethodForIndex(UInt32 index) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 211 virtual IOExternalTrap *getExternalTrapForIndex(UInt32 index) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 212 virtual IOReturn registerNotificationPort(mach_port_t port, UInt32 type, UInt32 refCon) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 213 214 static IOReturn _registerNotificationAction(OSObject *target, void *arg0, void *arg1, void *arg2, void *arg3) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://7529580> 215 static IOReturn registerNotificationAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 216 virtual IOReturn registerNotification(mach_port_t port, UInt32 refCon) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 217 218 virtual void setOnline(bool newOnline) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 219 220 virtual IOReturn performClientOutput(UInt32 firstSampleFrame, UInt32 loopCount, IOAudioClientBufferSet *bufferSet, UInt32 sampleIntervalHi, UInt32 sampleIntervalLo) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 221 virtual IOReturn performClientInput(UInt32 firstSampleFrame, IOAudioClientBufferSet *bufferSet) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 222 virtual void performWatchdogOutput(IOAudioClientBufferSet *clientBufferSet, UInt32 generationCount) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 223 224 virtual void lockBuffers() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 225 virtual void unlockBuffers() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 226 227 static void setCommandGateUsage(IOAudioEngineUserClient *userClient, bool increment) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://8518215> 228 229public: 230 231 static IOAudioEngineUserClient *withAudioEngine(IOAudioEngine *engine, task_t clientTask, void *securityToken, UInt32 type) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 232 static IOAudioEngineUserClient *withAudioEngine(IOAudioEngine *engine, task_t clientTask, void *securityToken, UInt32 type, OSDictionary *properties) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 233 234 virtual bool initWithAudioEngine(IOAudioEngine *engine, task_t task, void *securityToken, UInt32 type) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 235 236 virtual void free() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 237 virtual void freeClientBufferSetList() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 238 virtual void freeClientBuffer(IOAudioClientBuffer64 *clientBuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 239 240 virtual void stop(IOService *provider) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 241 242 virtual bool isOnline() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 243 244 virtual IOReturn registerBuffer(IOAudioStream *audioStream, void* sourceBuffer, UInt32 bufSizeInBytes, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 245 virtual IOReturn unregisterBuffer( void * sourceBuffer, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 246 247 static IOReturn _registerBufferAction(OSObject *target, void *arg0, void *arg1, void *arg2, void *arg3) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://7529580> 248 static IOReturn registerBufferAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 249 static IOReturn _unregisterBufferAction(OSObject *target, void *arg0, void *arg1, void *arg2, void *arg3) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://7529580> 250 static IOReturn unregisterBufferAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 251 252 virtual IOReturn registerClientBuffer(IOAudioStream *audioStream, void * sourceBuffer, UInt32 bufSizeInBytes, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 253 virtual IOReturn unregisterClientBuffer(void * sourceBuffer, UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 254 255 static IOReturn _getNearestStartTimeAction(OSObject *target, void *arg0, void *arg1, void *arg2, void *arg3) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://7529580> 256 static IOReturn getNearestStartTimeAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 257 258 virtual IOAudioClientBufferSet *findBufferSet(UInt32 bufferSetID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 259 virtual void removeBufferSet(IOAudioClientBufferSet *bufferSet) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 260 261 virtual IOReturn getConnectionID(UInt32 *connectionID) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 262 263 virtual IOReturn clientStart() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 264 virtual IOReturn clientStop() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 265 266 static IOReturn _startClientAction(OSObject *target, void *arg0, void *arg1, void *arg2, void *arg3) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://7529580> 267 static IOReturn startClientAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 268 static IOReturn _stopClientAction(OSObject *target, void *arg0, void *arg1, void *arg2, void *arg3) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; // <rdar://7529580> 269 static IOReturn stopClientAction(OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 270 271 virtual IOReturn startClient() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 272 virtual IOReturn stopClient() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 273 274 virtual IOReturn performClientIO(UInt32 firstSampleFrame, UInt32 loopCount, bool inputIO, UInt32 bufferSetID, UInt32 sampleIntervalHi, UInt32 sampleIntervalLo) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 275 276 virtual void sendFormatChangeNotification(IOAudioStream *audioStream) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 277 virtual IOReturn sendNotification(UInt32 notificationType) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 278 279}; 280 281// <rdar://101000004> END 282 283 284#endif /* _IOKIT_IOAUDIOENGINEUSERCLIENT_H */ 285