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_IOAUDIOSTREAM_H 24#define _IOKIT_IOAUDIOSTREAM_H 25 26#include <IOKit/IOService.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 37class OSSymbol; 38class OSArray; 39class OSDictionary; 40class OSSet; 41 42class IOCommandGate; 43class IOAudioControl; 44 45struct IOAudioClientBuffer; 46struct IOAudioStreamFormatDesc; 47 48/*! 49 * @class IOAudioStream 50 * @abstract This class wraps a single sample buffer in an audio driver. 51 * @discussion An IOAudioStream represents one hardware sample buffer as well as the direction 52 * of that buffer, the mix buffer that multiple clients mix into as well as a list of 53 * all of the formats to which this buffer can be set. 54 * 55 * When an IOAudioEngine is created during init time in the driver, an IOAudioStream must be 56 * created for each sample buffer in the device. Typically, the sample buffer will be interleaved 57 * (or single channel), as a non-interleaved buffer should be divided into multiple single-channel 58 * buffers (and multiple IOAudioStreams). 59 * 60 * Additionally, when an IOAudioStream is created it must have all of the possible formats (and 61 * allowed sample rates for each format) set and must have the currently set format specified 62 * (addAvailableFormat() and setFormat()). 63 */ 64 65class IOAudioStream : public IOService 66{ 67 OSDeclareDefaultStructors(IOAudioStream) 68 69 friend class IOAudioEngine; 70 friend class IOAudioEngineUserClient; 71 72public: 73 74 typedef IOReturn (*AudioIOFunction)(const void *mixBuf, void *sampleBuf, UInt32 firstSampleFrame, UInt32 numSampleFrames, const IOAudioStreamFormat *streamFormat, IOAudioStream *audioStream) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 75 76 static const OSSymbol *gDirectionKey; 77 static const OSSymbol *gNumChannelsKey; 78 static const OSSymbol *gSampleFormatKey; 79 static const OSSymbol *gNumericRepresentationKey; 80 static const OSSymbol *gBitDepthKey; 81 static const OSSymbol *gBitWidthKey; 82 static const OSSymbol *gAlignmentKey; 83 static const OSSymbol *gByteOrderKey; 84 static const OSSymbol *gIsMixableKey; 85 static const OSSymbol *gDriverTagKey; 86 static const OSSymbol *gMinimumSampleRateKey; 87 static const OSSymbol *gMaximumSampleRateKey; 88 89 static void initKeys() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 90 91 static OSDictionary *createDictionaryFromFormat(const IOAudioStreamFormat *streamFormat, const IOAudioStreamFormatExtension *formatExtension, OSDictionary *formatDict = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 92 static IOAudioStreamFormat *createFormatFromDictionary(const OSDictionary *formatDict, IOAudioStreamFormat *streamFormat = 0, IOAudioStreamFormatExtension *formatExtension = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 93 94 IOAudioEngine *audioEngine; 95 IOWorkLoop *workLoop; 96 IOCommandGate *commandGate; 97 IORecursiveLock *streamIOLock; 98 99 UInt32 numClients; 100 101 IOAudioStreamDirection direction; 102 103 IOAudioStreamFormat format; 104 IOAudioStreamFormatDesc *availableFormats; 105 OSArray *availableFormatDictionaries; 106 UInt32 numAvailableFormats; 107 108 UInt32 startingChannelID; 109 UInt32 maxNumChannels; 110 111 void *sampleBuffer; 112 UInt32 sampleBufferSize; 113 114 void *mixBuffer; 115 UInt32 mixBufferSize; 116 bool streamAllocatedMixBuffer; 117 118 AudioIOFunction *audioIOFunctions; 119 UInt32 numIOFunctions; 120 121 bool streamAvailable; 122 123 OSSet *defaultAudioControls; 124 125 IOAudioEnginePosition startingPosition; 126 IOAudioEnginePosition clippedPosition; 127 128 IOAudioClientBuffer *clientBufferListStart; 129 IOAudioClientBuffer *clientBufferListEnd; 130 131 IOAudioClientBuffer *userClientList; 132 133protected: 134 135 enum { 136 kErrorLogClipMoreThanOneBufferAhead = 0, 137 kErrorLogClipMoreThanOneBufferAheadPart2, 138 kErrorLogClipPositionIsOff, 139 kErrorLogAlreadyClipped, 140 kErrorLogClipBuffersAreNULL, 141 kErrorLogClipReturnsAnError, 142 kErrorLogNumberOfCounters, // needs to be after the last counter 143 kErrorLogDumpCounters = 0xFFFF 144 }; 145 146 struct ExpansionData { 147 IOAudioStreamFormatExtension streamFormatExtension; 148 UInt32 mSampleFramesReadByEngine; 149 IOReturn mClipOutputStatus; 150 unsigned int mStreamErrorCounts[kErrorLogNumberOfCounters]; 151 bool mStreamErrorCountsUpdated; 152 }; 153 154 ExpansionData *reserved; 155 156public: 157// New code added here: 158 // OSMetaClassDeclareReservedUsed(IOAudioStream, 0); 159 virtual const IOAudioStreamFormatExtension *getFormatExtension() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 160 // OSMetaClassDeclareReservedUsed(IOAudioStream, 1); 161 virtual IOReturn setFormat(const IOAudioStreamFormat *streamFormat, const IOAudioStreamFormatExtension *formatExtension, bool callDriver = true) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 162 // OSMetaClassDeclareReservedUsed(IOAudioStream, 2); 163 virtual IOReturn setFormat(const IOAudioStreamFormat *streamFormat, const IOAudioStreamFormatExtension *formatExtension, OSDictionary *formatDict, bool callDriver = true) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 164 // OSMetaClassDeclareReservedUsed(IOAudioStream, 3); 165 virtual void addAvailableFormat(const IOAudioStreamFormat *streamFormat, const IOAudioStreamFormatExtension *formatExtension, const IOAudioSampleRate *minRate, const IOAudioSampleRate *maxRate, const AudioIOFunction *ioFunctionList = NULL, UInt32 numFunctions = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 166 // OSMetaClassDeclareReservedUsed(IOAudioStream, 4); 167 virtual void addAvailableFormat(const IOAudioStreamFormat *streamFormat, const IOAudioStreamFormatExtension *formatExtension, const IOAudioSampleRate *minRate, const IOAudioSampleRate *maxRate, AudioIOFunction ioFunction) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 168 // OSMetaClassDeclareReservedUsed(IOAudioStream, 5); 169 virtual bool validateFormat(IOAudioStreamFormat *streamFormat, IOAudioStreamFormatExtension *formatExtension, IOAudioStreamFormatDesc *formatDesc) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 170 // OSMetaClassDeclareReservedUsed(IOAudioStream, 6); 171 virtual void setTerminalType(const UInt32 terminalType) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 172 // OSMetaClassDeclareReservedUsed(IOAudioStream, 7); 173 virtual IOReturn mixOutputSamples(const void *sourceBuf, void *mixBuf, UInt32 firstSampleFrame, UInt32 numSampleFrames, const IOAudioStreamFormat *streamFormat, IOAudioStream *audioStream) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 174 // OSMetaClassDeclareReservedUsed(IOAudioStream, 8); 175 virtual void setSampleLatency(UInt32 numSamples) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 176 // OSMetaClassDeclareReservedUsed(IOAudioStream, 9); 177 virtual bool validateFormat(IOAudioStreamFormat *streamFormat, IOAudioStreamFormatExtension *formatExtension, IOAudioStreamFormatDesc *formatDesc, const IOAudioSampleRate *sampleRate) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 178 // OSMetaClassDeclareReservedUsed(IOAudioStream, 10); 179 virtual UInt32 getNumSampleFramesRead() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 180 // OSMetaClassDeclareReservedUsed(IOAudioStream, 11); 181 virtual void setDefaultNumSampleFramesRead(UInt32) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 182 183private: 184 OSMetaClassDeclareReservedUsed(IOAudioStream, 0); 185 OSMetaClassDeclareReservedUsed(IOAudioStream, 1); 186 OSMetaClassDeclareReservedUsed(IOAudioStream, 2); 187 OSMetaClassDeclareReservedUsed(IOAudioStream, 3); 188 OSMetaClassDeclareReservedUsed(IOAudioStream, 4); 189 OSMetaClassDeclareReservedUsed(IOAudioStream, 5); 190 OSMetaClassDeclareReservedUsed(IOAudioStream, 6); 191 OSMetaClassDeclareReservedUsed(IOAudioStream, 7); 192 OSMetaClassDeclareReservedUsed(IOAudioStream, 8); 193 OSMetaClassDeclareReservedUsed(IOAudioStream, 9); 194 OSMetaClassDeclareReservedUsed(IOAudioStream, 10); 195 OSMetaClassDeclareReservedUsed(IOAudioStream, 11); 196 197 OSMetaClassDeclareReservedUnused(IOAudioStream, 12); 198 OSMetaClassDeclareReservedUnused(IOAudioStream, 13); 199 OSMetaClassDeclareReservedUnused(IOAudioStream, 14); 200 OSMetaClassDeclareReservedUnused(IOAudioStream, 15); 201 OSMetaClassDeclareReservedUnused(IOAudioStream, 16); 202 OSMetaClassDeclareReservedUnused(IOAudioStream, 17); 203 OSMetaClassDeclareReservedUnused(IOAudioStream, 18); 204 OSMetaClassDeclareReservedUnused(IOAudioStream, 19); 205 OSMetaClassDeclareReservedUnused(IOAudioStream, 20); 206 OSMetaClassDeclareReservedUnused(IOAudioStream, 21); 207 OSMetaClassDeclareReservedUnused(IOAudioStream, 22); 208 OSMetaClassDeclareReservedUnused(IOAudioStream, 23); 209 OSMetaClassDeclareReservedUnused(IOAudioStream, 24); 210 OSMetaClassDeclareReservedUnused(IOAudioStream, 25); 211 OSMetaClassDeclareReservedUnused(IOAudioStream, 26); 212 OSMetaClassDeclareReservedUnused(IOAudioStream, 27); 213 OSMetaClassDeclareReservedUnused(IOAudioStream, 28); 214 OSMetaClassDeclareReservedUnused(IOAudioStream, 29); 215 OSMetaClassDeclareReservedUnused(IOAudioStream, 30); 216 OSMetaClassDeclareReservedUnused(IOAudioStream, 31); 217 OSMetaClassDeclareReservedUnused(IOAudioStream, 32); 218 OSMetaClassDeclareReservedUnused(IOAudioStream, 33); 219 OSMetaClassDeclareReservedUnused(IOAudioStream, 34); 220 OSMetaClassDeclareReservedUnused(IOAudioStream, 35); 221 OSMetaClassDeclareReservedUnused(IOAudioStream, 36); 222 OSMetaClassDeclareReservedUnused(IOAudioStream, 37); 223 OSMetaClassDeclareReservedUnused(IOAudioStream, 38); 224 OSMetaClassDeclareReservedUnused(IOAudioStream, 39); 225 OSMetaClassDeclareReservedUnused(IOAudioStream, 40); 226 OSMetaClassDeclareReservedUnused(IOAudioStream, 41); 227 OSMetaClassDeclareReservedUnused(IOAudioStream, 42); 228 OSMetaClassDeclareReservedUnused(IOAudioStream, 43); 229 OSMetaClassDeclareReservedUnused(IOAudioStream, 44); 230 OSMetaClassDeclareReservedUnused(IOAudioStream, 45); 231 OSMetaClassDeclareReservedUnused(IOAudioStream, 46); 232 OSMetaClassDeclareReservedUnused(IOAudioStream, 47); 233 234public: 235 virtual bool initWithAudioEngine(IOAudioEngine *engine, IOAudioStreamDirection dir, UInt32 startChannelID, const char *streamDescription = NULL, OSDictionary *properties = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 236 virtual void free() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 237 238 virtual void stop(IOService *provider) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 239 240 virtual IOWorkLoop *getWorkLoop() const; 241 242 virtual IOReturn setProperties(OSObject *properties) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 243 244 virtual IOAudioStreamDirection getDirection() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 245 246 virtual void setSampleBuffer(void *buffer, UInt32 size) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 247 virtual void *getSampleBuffer() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 248 virtual UInt32 getSampleBufferSize() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 249 250 virtual void setMixBuffer(void *buffer, UInt32 size) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 251 virtual void *getMixBuffer() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 252 virtual UInt32 getMixBufferSize() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 253 254 virtual void numSampleFramesPerBufferChanged() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 255 256 virtual void clearSampleBuffer() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 257 258 virtual void setIOFunction(AudioIOFunction ioFunction) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 259 virtual void setIOFunctionList(const AudioIOFunction *ioFunctionList, UInt32 numFunctions) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 260 261 virtual const IOAudioStreamFormat *getFormat() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 262 static IOReturn setFormatAction(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; 263 static IOReturn _setFormatAction(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://8568040,8691669> 264 virtual IOReturn setFormat(const IOAudioStreamFormat *streamFormat, bool callDriver = true) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 265 virtual IOReturn setFormat(OSDictionary *formatDict) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 266 virtual IOReturn setFormat(const IOAudioStreamFormat *streamFormat, OSDictionary *formatDict, bool callDriver = true) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 267 virtual IOReturn hardwareFormatChanged(const IOAudioStreamFormat *streamFormat) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 268 virtual void addAvailableFormat(const IOAudioStreamFormat *streamFormat, const IOAudioSampleRate *minRate, const IOAudioSampleRate *maxRate, const AudioIOFunction *ioFunctionList = NULL, UInt32 numFunctions = 0) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 269 virtual void addAvailableFormat(const IOAudioStreamFormat *streamFormat, const IOAudioSampleRate *minRate, const IOAudioSampleRate *maxRate, AudioIOFunction ioFunction) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 270 virtual void clearAvailableFormats() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 271 virtual bool validateFormat(IOAudioStreamFormat *streamFormat, IOAudioStreamFormatDesc *formatDesc) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 272 273 virtual UInt32 getStartingChannelID() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 274 virtual UInt32 getMaxNumChannels() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 275 276 virtual void setStreamAvailable(bool available) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 277 virtual bool getStreamAvailable() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 278 279 virtual IOReturn addDefaultAudioControl(IOAudioControl *defaultAudioControl) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 280 virtual void removeDefaultAudioControls() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 281 282protected: 283 virtual void lockStreamForIO() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 284 virtual void unlockStreamForIO() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 285 286 virtual void updateNumClients() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 287 virtual IOReturn addClient(IOAudioClientBuffer *clientBuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 288 virtual void removeClient(IOAudioClientBuffer *clientBuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 289 virtual UInt32 getNumClients() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 290 291 virtual IOReturn processOutputSamples(IOAudioClientBuffer *clientBuffer, UInt32 firstSampleFrame, UInt32 loopCount, bool samplesAvailable) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 292 virtual IOReturn readInputSamples(IOAudioClientBuffer *clientBuffer, UInt32 firstSampleFrame) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 293 294 virtual void resetClipInfo() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 295 virtual void clipIfNecessary() AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 296 virtual void clipOutputSamples(UInt32 startingSampleFrame, UInt32 numSampleFrames) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 297 298 virtual void setStartingChannelNumber(UInt32 channelNumber) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 299 300private: 301 virtual void setDirection(IOAudioStreamDirection dir) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 302 303 void safeLogError(int error , long unsigned int arg1 , long unsigned int arg2 , long unsigned int arg3 , long unsigned int arg4 , void* arg5, void* arg6) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10; 304 305}; 306 307#endif /* _IOKIT_IOAUDIOSTREAM_H */ 308