this repo has no description
at fixPythonPipStalling 427 lines 16 kB view raw
1#ifndef AUDIOFILE_H 2#define AUDIOFILE_H 3 4#include <CoreServices/MacTypes.h> 5#include <CoreFoundation/CFURL.h> 6#include <CoreAudio/AudioHardware.h> 7 8#ifdef __cplusplus 9extern "C" { 10#endif 11 12typedef UInt32 AudioFileTypeID; 13enum { 14 kAudioFileAIFFType = 'AIFF', 15 kAudioFileAIFCType = 'AIFC', 16 kAudioFileWAVEType = 'WAVE', 17 kAudioFileRF64Type = 'RF64', 18 kAudioFileSoundDesigner2Type = 'Sd2f', 19 kAudioFileNextType = 'NeXT', 20 kAudioFileMP3Type = 'MPG3', 21 kAudioFileMP2Type = 'MPG2', 22 kAudioFileMP1Type = 'MPG1', 23 kAudioFileAC3Type = 'ac-3', 24 kAudioFileAAC_ADTSType = 'adts', 25 kAudioFileMPEG4Type = 'mp4f', 26 kAudioFileM4AType = 'm4af', 27 kAudioFileM4BType = 'm4bf', 28 kAudioFileCAFType = 'caff', 29 kAudioFile3GPType = '3gpp', 30 kAudioFile3GP2Type = '3gp2', 31 kAudioFileAMRType = 'amrf', 32 kAudioFileFLACType = 'flac' 33}; 34enum { 35 kAudioFileUnspecifiedError = 'wht?', 36 kAudioFileUnsupportedFileTypeError = 'typ?', 37 kAudioFileUnsupportedDataFormatError = 'fmt?', 38 kAudioFileUnsupportedPropertyError = 'pty?', 39 kAudioFileBadPropertySizeError = '!siz', 40 kAudioFilePermissionsError = 'prm?', 41 kAudioFileNotOptimizedError = 'optm', 42 43 kAudioFileInvalidChunkError = 'chk?', 44 kAudioFileDoesNotAllow64BitDataSizeError = 'off?', 45 kAudioFileInvalidPacketOffsetError = 'pck?', 46 kAudioFileInvalidFileError = 'dta?', 47 kAudioFileOperationNotSupportedError = 0x6F703F3F, 48 49 kAudioFileNotOpenError = -38, 50 kAudioFileEndOfFileError = -39, 51 kAudioFilePositionError = -40, 52 kAudioFileFileNotFoundError = -43 53}; 54typedef UInt32 AudioFileFlags; enum { 55 kAudioFileFlags_EraseFile = 1, 56 kAudioFileFlags_DontPageAlignAudioData = 2 57}; 58 59typedef SInt8 AudioFilePermissions; enum { 60 kAudioFileReadPermission = 0x01, 61 kAudioFileWritePermission = 0x02, 62 kAudioFileReadWritePermission = 0x03 63}; 64typedef struct OpaqueAudioFileID *AudioFileID; 65 66 67 68 69typedef UInt32 AudioFilePropertyID; 70enum { 71 kAudioFileLoopDirection_NoLooping = 0, 72 kAudioFileLoopDirection_Forward = 1, 73 kAudioFileLoopDirection_ForwardAndBackward = 2, 74 kAudioFileLoopDirection_Backward = 3 75}; 76struct AudioFile_SMPTE_Time 77{ 78 SInt8 mHours; 79 UInt8 mMinutes; 80 UInt8 mSeconds; 81 UInt8 mFrames; 82 UInt32 mSubFrameSampleOffset; 83}; 84typedef struct AudioFile_SMPTE_Time AudioFile_SMPTE_Time; 85 86 87 88 89 90 91 92enum { 93 kAudioFileMarkerType_Generic = 0, 94}; 95struct AudioFileMarker 96{ 97 Float64 mFramePosition; 98 99 CFStringRef _Nullable mName; 100 SInt32 mMarkerID; 101 102 AudioFile_SMPTE_Time mSMPTETime; 103 UInt32 mType; 104 UInt16 mReserved; 105 UInt16 mChannel; 106}; 107typedef struct AudioFileMarker AudioFileMarker; 108struct AudioFileMarkerList 109{ 110 UInt32 mSMPTE_TimeType; 111 UInt32 mNumberMarkers; 112 AudioFileMarker mMarkers[1]; 113}; 114typedef struct AudioFileMarkerList AudioFileMarkerList; 115static __inline__ __attribute__((always_inline)) size_t NumBytesToNumAudioFileMarkers(size_t inNumBytes) 116{ 117 return (inNumBytes<__builtin_offsetof(AudioFileMarkerList, mMarkers[0]) ? 0 : (inNumBytes - __builtin_offsetof(AudioFileMarkerList, mMarkers[0])) / sizeof(AudioFileMarker)); 118} 119static __inline__ __attribute__((always_inline)) size_t NumAudioFileMarkersToNumBytes(size_t inNumMarkers) 120{ 121 return (__builtin_offsetof(AudioFileMarkerList, mMarkers) + (inNumMarkers) * sizeof(AudioFileMarker)); 122} 123typedef UInt32 AudioFileRegionFlags; enum { 124 kAudioFileRegionFlag_LoopEnable = 1, 125 kAudioFileRegionFlag_PlayForward = 2, 126 kAudioFileRegionFlag_PlayBackward = 4 127}; 128struct AudioFileRegion 129{ 130 UInt32 mRegionID; 131 CFStringRef mName; 132 AudioFileRegionFlags mFlags; 133 UInt32 mNumberMarkers; 134 AudioFileMarker mMarkers[1]; 135}; 136typedef struct AudioFileRegion AudioFileRegion; 137struct AudioFileRegionList 138{ 139 UInt32 mSMPTE_TimeType; 140 UInt32 mNumberRegions; 141 AudioFileRegion mRegions[1]; 142}; 143typedef struct AudioFileRegionList AudioFileRegionList; 144static __inline__ __attribute__((always_inline)) AudioFileRegion *NextAudioFileRegion(const AudioFileRegion *inAFRegionPtr) 145{ 146 return ((AudioFileRegion*)((char*)inAFRegionPtr + __builtin_offsetof(AudioFileRegion, mMarkers) + (inAFRegionPtr->mNumberMarkers)*sizeof(AudioFileMarker))); 147} 148struct AudioFramePacketTranslation 149{ 150 SInt64 mFrame; 151 SInt64 mPacket; 152 UInt32 mFrameOffsetInPacket; 153}; 154typedef struct AudioFramePacketTranslation AudioFramePacketTranslation; 155typedef UInt32 AudioBytePacketTranslationFlags; enum { 156 kBytePacketTranslationFlag_IsEstimate = 1 157}; 158struct AudioBytePacketTranslation 159{ 160 SInt64 mByte; 161 SInt64 mPacket; 162 UInt32 mByteOffsetInPacket; 163 AudioBytePacketTranslationFlags mFlags; 164}; 165typedef struct AudioBytePacketTranslation AudioBytePacketTranslation; 166struct AudioFilePacketTableInfo 167{ 168 SInt64 mNumberValidFrames; 169 SInt32 mPrimingFrames; 170 SInt32 mRemainderFrames; 171}; 172typedef struct AudioFilePacketTableInfo AudioFilePacketTableInfo; 173extern OSStatus 174AudioFileCreateWithURL (CFURLRef inFileRef, 175 AudioFileTypeID inFileType, 176 const AudioStreamBasicDescription *inFormat, 177 AudioFileFlags inFlags, 178 AudioFileID _Nullable * _Nonnull outAudioFile); 179extern OSStatus 180AudioFileOpenURL ( CFURLRef inFileRef, 181 AudioFilePermissions inPermissions, 182 AudioFileTypeID inFileTypeHint, 183 AudioFileID _Nullable * _Nonnull outAudioFile); 184typedef OSStatus (*AudioFile_ReadProc)( 185 void * inClientData, 186 SInt64 inPosition, 187 UInt32 requestCount, 188 void * buffer, 189 UInt32 * actualCount); 190typedef OSStatus (*AudioFile_WriteProc)( 191 void * inClientData, 192 SInt64 inPosition, 193 UInt32 requestCount, 194 const void *buffer, 195 UInt32 * actualCount); 196typedef SInt64 (*AudioFile_GetSizeProc)( 197 void * inClientData); 198typedef OSStatus (*AudioFile_SetSizeProc)( 199 void * inClientData, 200 SInt64 inSize); 201extern OSStatus 202AudioFileInitializeWithCallbacks ( 203 void * inClientData, 204 AudioFile_ReadProc inReadFunc, 205 AudioFile_WriteProc inWriteFunc, 206 AudioFile_GetSizeProc inGetSizeFunc, 207 AudioFile_SetSizeProc inSetSizeFunc, 208 AudioFileTypeID inFileType, 209 const AudioStreamBasicDescription *inFormat, 210 AudioFileFlags inFlags, 211 AudioFileID _Nullable * _Nonnull outAudioFile); 212extern OSStatus 213AudioFileOpenWithCallbacks ( 214 void * inClientData, 215 AudioFile_ReadProc inReadFunc, 216 AudioFile_WriteProc _Nullable inWriteFunc, 217 AudioFile_GetSizeProc inGetSizeFunc, 218 AudioFile_SetSizeProc _Nullable inSetSizeFunc, 219 AudioFileTypeID inFileTypeHint, 220 AudioFileID _Nullable * _Nonnull outAudioFile); 221extern OSStatus 222AudioFileClose (AudioFileID inAudioFile); 223extern OSStatus 224AudioFileOptimize (AudioFileID inAudioFile); 225extern OSStatus 226AudioFileReadBytes ( AudioFileID inAudioFile, 227 Boolean inUseCache, 228 SInt64 inStartingByte, 229 UInt32 *ioNumBytes, 230 void *outBuffer); 231extern OSStatus 232AudioFileWriteBytes ( AudioFileID inAudioFile, 233 Boolean inUseCache, 234 SInt64 inStartingByte, 235 UInt32 *ioNumBytes, 236 const void *inBuffer); 237extern OSStatus 238AudioFileReadPacketData ( AudioFileID inAudioFile, 239 Boolean inUseCache, 240 UInt32 * ioNumBytes, 241 AudioStreamPacketDescription * _Nullable outPacketDescriptions, 242 SInt64 inStartingPacket, 243 UInt32 * ioNumPackets, 244 void * _Nullable outBuffer); 245extern OSStatus 246AudioFileReadPackets ( AudioFileID inAudioFile, 247 Boolean inUseCache, 248 UInt32 * outNumBytes, 249 AudioStreamPacketDescription * _Nullable outPacketDescriptions, 250 SInt64 inStartingPacket, 251 UInt32 * ioNumPackets, 252 void * _Nullable outBuffer); 253extern OSStatus 254AudioFileWritePackets ( AudioFileID inAudioFile, 255 Boolean inUseCache, 256 UInt32 inNumBytes, 257 const AudioStreamPacketDescription * _Nullable inPacketDescriptions, 258 SInt64 inStartingPacket, 259 UInt32 *ioNumPackets, 260 const void *inBuffer); 261extern OSStatus 262AudioFileCountUserData ( AudioFileID inAudioFile, 263 UInt32 inUserDataID, 264 UInt32 *outNumberItems); 265extern OSStatus 266AudioFileGetUserDataSize ( AudioFileID inAudioFile, 267 UInt32 inUserDataID, 268 UInt32 inIndex, 269 UInt32 *outUserDataSize); 270extern OSStatus 271AudioFileGetUserData ( AudioFileID inAudioFile, 272 UInt32 inUserDataID, 273 UInt32 inIndex, 274 UInt32 *ioUserDataSize, 275 void *outUserData); 276extern OSStatus 277AudioFileSetUserData ( AudioFileID inAudioFile, 278 UInt32 inUserDataID, 279 UInt32 inIndex, 280 UInt32 inUserDataSize, 281 const void *inUserData); 282extern OSStatus 283AudioFileRemoveUserData ( AudioFileID inAudioFile, 284 UInt32 inUserDataID, 285 UInt32 inIndex); 286enum 287{ 288 kAudioFilePropertyFileFormat = 'ffmt', 289 kAudioFilePropertyDataFormat = 'dfmt', 290 kAudioFilePropertyIsOptimized = 'optm', 291 kAudioFilePropertyMagicCookieData = 'mgic', 292 kAudioFilePropertyAudioDataByteCount = 'bcnt', 293 kAudioFilePropertyAudioDataPacketCount = 'pcnt', 294 kAudioFilePropertyMaximumPacketSize = 'psze', 295 kAudioFilePropertyDataOffset = 'doff', 296 kAudioFilePropertyChannelLayout = 'cmap', 297 kAudioFilePropertyDeferSizeUpdates = 'dszu', 298 kAudioFilePropertyDataFormatName = 'fnme', 299 kAudioFilePropertyMarkerList = 'mkls', 300 kAudioFilePropertyRegionList = 'rgls', 301 kAudioFilePropertyPacketToFrame = 'pkfr', 302 kAudioFilePropertyFrameToPacket = 'frpk', 303 kAudioFilePropertyPacketToByte = 'pkby', 304 kAudioFilePropertyByteToPacket = 'bypk', 305 kAudioFilePropertyChunkIDs = 'chid', 306 kAudioFilePropertyInfoDictionary = 'info', 307 kAudioFilePropertyPacketTableInfo = 'pnfo', 308 kAudioFilePropertyFormatList = 'flst', 309 kAudioFilePropertyPacketSizeUpperBound = 'pkub', 310 kAudioFilePropertyReserveDuration = 'rsrv', 311 kAudioFilePropertyEstimatedDuration = 'edur', 312 kAudioFilePropertyBitRate = 'brat', 313 kAudioFilePropertyID3Tag = 'id3t', 314 kAudioFilePropertySourceBitDepth = 'sbtd', 315 kAudioFilePropertyAlbumArtwork = 'aart', 316 kAudioFilePropertyAudioTrackCount = 'atct', 317 kAudioFilePropertyUseAudioTrack = 'uatk' 318}; 319extern OSStatus 320AudioFileGetPropertyInfo( AudioFileID inAudioFile, 321 AudioFilePropertyID inPropertyID, 322 UInt32 * _Nullable outDataSize, 323 UInt32 * _Nullable isWritable); 324extern OSStatus 325AudioFileGetProperty( AudioFileID inAudioFile, 326 AudioFilePropertyID inPropertyID, 327 UInt32 *ioDataSize, 328 void *outPropertyData); 329extern OSStatus 330AudioFileSetProperty( AudioFileID inAudioFile, 331 AudioFilePropertyID inPropertyID, 332 UInt32 inDataSize, 333 const void *inPropertyData); 334enum 335{ 336 kAudioFileGlobalInfo_ReadableTypes = 'afrf', 337 kAudioFileGlobalInfo_WritableTypes = 'afwf', 338 kAudioFileGlobalInfo_FileTypeName = 'ftnm', 339 kAudioFileGlobalInfo_AvailableStreamDescriptionsForFormat = 'sdid', 340 kAudioFileGlobalInfo_AvailableFormatIDs = 'fmid', 341 342 kAudioFileGlobalInfo_AllExtensions = 'alxt', 343 kAudioFileGlobalInfo_AllHFSTypeCodes = 'ahfs', 344 kAudioFileGlobalInfo_AllUTIs = 'auti', 345 kAudioFileGlobalInfo_AllMIMETypes = 'amim', 346 347 kAudioFileGlobalInfo_ExtensionsForType = 'fext', 348 kAudioFileGlobalInfo_HFSTypeCodesForType = 'fhfs', 349 kAudioFileGlobalInfo_UTIsForType = 'futi', 350 kAudioFileGlobalInfo_MIMETypesForType = 'fmim', 351 352 kAudioFileGlobalInfo_TypesForMIMEType = 'tmim', 353 kAudioFileGlobalInfo_TypesForUTI = 'tuti', 354 kAudioFileGlobalInfo_TypesForHFSTypeCode = 'thfs', 355 kAudioFileGlobalInfo_TypesForExtension = 'text' 356}; 357struct AudioFileTypeAndFormatID 358{ 359 AudioFileTypeID mFileType; 360 UInt32 mFormatID; 361}; 362typedef struct AudioFileTypeAndFormatID AudioFileTypeAndFormatID; 363extern OSStatus 364AudioFileGetGlobalInfoSize( AudioFilePropertyID inPropertyID, 365 UInt32 inSpecifierSize, 366 void * _Nullable inSpecifier, 367 UInt32 *outDataSize); 368extern OSStatus 369AudioFileGetGlobalInfo( AudioFilePropertyID inPropertyID, 370 UInt32 inSpecifierSize, 371 void * _Nullable inSpecifier, 372 UInt32 *ioDataSize, 373 void *outPropertyData); 374 375 376 377struct FSRef; 378extern OSStatus 379AudioFileCreate ( const struct FSRef *inParentRef, 380 CFStringRef inFileName, 381 AudioFileTypeID inFileType, 382 const AudioStreamBasicDescription *inFormat, 383 AudioFileFlags inFlags, 384 struct FSRef *outNewFileRef, 385 AudioFileID _Nullable * _Nonnull outAudioFile); 386extern OSStatus 387AudioFileInitialize ( const struct FSRef *inFileRef, 388 AudioFileTypeID inFileType, 389 const AudioStreamBasicDescription *inFormat, 390 AudioFileFlags inFlags, 391 AudioFileID _Nullable * _Nonnull outAudioFile); 392extern OSStatus 393AudioFileOpen ( const struct FSRef *inFileRef, 394 AudioFilePermissions inPermissions, 395 AudioFileTypeID inFileTypeHint, 396 AudioFileID _Nullable * _Nonnull outAudioFile); 397 398#define kAFInfoDictionary_Album "album" 399#define kAFInfoDictionary_ApproximateDurationInSeconds "approximate duration in seconds" 400#define kAFInfoDictionary_Artist "artist" 401#define kAFInfoDictionary_ChannelLayout "channel layout" 402#define kAFInfoDictionary_Comments "comments" 403#define kAFInfoDictionary_Composer "composer" 404#define kAFInfoDictionary_Copyright "copyright" 405#define kAFInfoDictionary_EncodingApplication "encoding application" 406#define kAFInfoDictionary_Genre "genre" 407#define kAFInfoDictionary_ISRC "ISRC" // International Standard Recording Code 408#define kAFInfoDictionary_KeySignature "key signature" 409#define kAFInfoDictionary_Lyricist "lyricist" 410#define kAFInfoDictionary_NominalBitRate "nominal bit rate" 411#define kAFInfoDictionary_RecordedDate "recorded date" 412#define kAFInfoDictionary_SourceBitDepth "source bit depth" 413#define kAFInfoDictionary_SourceEncoder "source encoder" 414#define kAFInfoDictionary_SubTitle "subtitle" 415#define kAFInfoDictionary_Tempo "tempo" 416#define kAFInfoDictionary_TimeSignature "time signature" 417#define kAFInfoDictionary_Title "title" 418#define kAFInfoDictionary_TrackNumber "track number" 419#define kAFInfoDictionary_Year "year" 420 421 422#ifdef __cplusplus 423} 424#endif 425 426#endif 427