Mercurial > projects > dstep
view dstep/coreaudio/CoreAudioTypes.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.CoreAudioTypes; import dstep.coreservices.carboncore.MacTypes; import dstep.internal.Version; import dstep.objc.bridge.TypeEncoding; alias float AudioSampleType; alias uint AudioChannelLabel; alias uint AudioChannelLayoutTag; // This is needed otherwise the enums will fail compiling with gdc version (GNU) { private { const __kAudioFormatLinearPCM = getOSType!("lpcm"); const __kAudioFormatAC3 = getOSType!("ac-3"); const __kAudioFormat60958AC3 = getOSType!("cac3"); const __kAudioFormatAppleIMA4 = getOSType!("ima4"); const __kAudioFormatMPEG4AAC = getOSType!("aac "); const __kAudioFormatMPEG4CELP = getOSType!("celp"); const __kAudioFormatMPEG4HVXC = getOSType!("hvxc"); const __kAudioFormatMPEG4TwinVQ = getOSType!("twvq"); const __kAudioFormatMACE3 = getOSType!("MAC3"); const __kAudioFormatMACE6 = getOSType!("MAC6"); const __kAudioFormatULaw = getOSType!("ulaw"); const __kAudioFormatALaw = getOSType!("alaw"); const __kAudioFormatQDesign = getOSType!("QDMC"); const __kAudioFormatQDesign2 = getOSType!("QDM2"); const __kAudioFormatQUALCOMM = getOSType!("Qclp"); const __kAudioFormatMPEGLayer1 = getOSType!(".mp1"); const __kAudioFormatMPEGLayer2 = getOSType!(".mp2"); const __kAudioFormatMPEGLayer3 = getOSType!(".mp3"); const __kAudioFormatTimeCode = getOSType!("time"); const __kAudioFormatMIDIStream = getOSType!("midi"); const __kAudioFormatParameterValueStream = getOSType!("apvs"); const __kAudioFormatAppleLossless = getOSType!("alac"); const __kAudioFormatMPEG4AAC_HE = getOSType!("aach"); const __kAudioFormatMPEG4AAC_LD = getOSType!("aacl"); const __kAudioFormatMPEG4AAC_HE_V2 = getOSType!("aacp"); const __kAudioFormatMPEG4AAC_Spatial = getOSType!("aacs"); const __kAudioFormatAMR = getOSType!("samr"); } } enum { kAudioStreamAnyRate = 0 } enum { kAudioFormatLinearPCM = getOSType!("lpcm"), kAudioFormatAC3 = getOSType!("ac-3"), kAudioFormat60958AC3 = getOSType!("cac3"), kAudioFormatAppleIMA4 = getOSType!("ima4"), kAudioFormatMPEG4AAC = getOSType!("aac "), kAudioFormatMPEG4CELP = getOSType!("celp"), kAudioFormatMPEG4HVXC = getOSType!("hvxc"), kAudioFormatMPEG4TwinVQ = getOSType!("twvq"), kAudioFormatMACE3 = getOSType!("MAC3"), kAudioFormatMACE6 = getOSType!("MAC6"), kAudioFormatULaw = getOSType!("ulaw"), kAudioFormatALaw = getOSType!("alaw"), kAudioFormatQDesign = getOSType!("QDMC"), kAudioFormatQDesign2 = getOSType!("QDM2"), kAudioFormatQUALCOMM = getOSType!("Qclp"), kAudioFormatMPEGLayer1 = getOSType!(".mp1"), kAudioFormatMPEGLayer2 = getOSType!(".mp2"), kAudioFormatMPEGLayer3 = getOSType!(".mp3"), kAudioFormatTimeCode = getOSType!("time"), kAudioFormatMIDIStream = getOSType!("midi"), kAudioFormatParameterValueStream = getOSType!("apvs"), kAudioFormatAppleLossless = getOSType!("alac"), kAudioFormatMPEG4AAC_HE = getOSType!("aach"), kAudioFormatMPEG4AAC_LD = getOSType!("aacl"), kAudioFormatMPEG4AAC_HE_V2 = getOSType!("aacp"), kAudioFormatMPEG4AAC_Spatial = getOSType!("aacs"), kAudioFormatAMR = getOSType!("samr") } version (D_LP64) { enum : long { kAudioFormatFlagIsFloat = (1L << 0), kAudioFormatFlagIsBigEndian = (1L << 1), kAudioFormatFlagIsSignedInteger = (1L << 2), kAudioFormatFlagIsPacked = (1L << 3), kAudioFormatFlagIsAlignedHigh = (1L << 4), kAudioFormatFlagIsNonInterleaved = (1L << 5), kAudioFormatFlagIsNonMixable = (1L << 6), kAudioFormatFlagsAreAllClear = (1L << 31), kLinearPCMFormatFlagIsFloat = kAudioFormatFlagIsFloat, kLinearPCMFormatFlagIsBigEndian = kAudioFormatFlagIsBigEndian, kLinearPCMFormatFlagIsSignedInteger = kAudioFormatFlagIsSignedInteger, kLinearPCMFormatFlagIsPacked = kAudioFormatFlagIsPacked, kLinearPCMFormatFlagIsAlignedHigh = kAudioFormatFlagIsAlignedHigh, kLinearPCMFormatFlagIsNonInterleaved = kAudioFormatFlagIsNonInterleaved, kLinearPCMFormatFlagIsNonMixable = kAudioFormatFlagIsNonMixable, kLinearPCMFormatFlagsAreAllClear = kAudioFormatFlagsAreAllClear, kAppleLosslessFormatFlag_16BitSourceData = 1, kAppleLosslessFormatFlag_20BitSourceData = 2, kAppleLosslessFormatFlag_24BitSourceData = 3, kAppleLosslessFormatFlag_32BitSourceData = 4 } } else { enum { kAudioFormatFlagIsFloat = (1L << 0), kAudioFormatFlagIsBigEndian = (1L << 1), kAudioFormatFlagIsSignedInteger = (1L << 2), kAudioFormatFlagIsPacked = (1L << 3), kAudioFormatFlagIsAlignedHigh = (1L << 4), kAudioFormatFlagIsNonInterleaved = (1L << 5), kAudioFormatFlagIsNonMixable = (1L << 6), kAudioFormatFlagsAreAllClear = (1 << 31), kLinearPCMFormatFlagIsFloat = kAudioFormatFlagIsFloat, kLinearPCMFormatFlagIsBigEndian = kAudioFormatFlagIsBigEndian, kLinearPCMFormatFlagIsSignedInteger = kAudioFormatFlagIsSignedInteger, kLinearPCMFormatFlagIsPacked = kAudioFormatFlagIsPacked, kLinearPCMFormatFlagIsAlignedHigh = kAudioFormatFlagIsAlignedHigh, kLinearPCMFormatFlagIsNonInterleaved = kAudioFormatFlagIsNonInterleaved, kLinearPCMFormatFlagIsNonMixable = kAudioFormatFlagIsNonMixable, kLinearPCMFormatFlagsAreAllClear = kAudioFormatFlagsAreAllClear, kAppleLosslessFormatFlag_16BitSourceData = 1, kAppleLosslessFormatFlag_20BitSourceData = 2, kAppleLosslessFormatFlag_24BitSourceData = 3, kAppleLosslessFormatFlag_32BitSourceData = 4 } } enum { kAudioFormatFlagsNativeEndian = 0, kAudioFormatFlagsCanonical = kAudioFormatFlagIsFloat | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked, kAudioFormatFlagsNativeFloatPacked = kAudioFormatFlagIsFloat | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked } enum { kSMPTETimeType24 = 0, kSMPTETimeType25 = 1, kSMPTETimeType30Drop = 2, kSMPTETimeType30 = 3, kSMPTETimeType2997 = 4, kSMPTETimeType2997Drop = 5, kSMPTETimeType60 = 6, kSMPTETimeType5994 = 7, kSMPTETimeType60Drop = 8, kSMPTETimeType5994Drop = 9, kSMPTETimeType50 = 10, kSMPTETimeType2398 = 11 } enum { kSMPTETimeValid = (1L << 0), kSMPTETimeRunning = (1L << 1) } enum { kAudioTimeStampSampleTimeValid = (1L << 0), kAudioTimeStampHostTimeValid = (1L << 1), kAudioTimeStampRateScalarValid = (1L << 2), kAudioTimeStampWordClockTimeValid = (1L << 3), kAudioTimeStampSMPTETimeValid = (1L << 4) } enum { kAudioTimeStampSampleHostTimeValid = (kAudioTimeStampSampleTimeValid | kAudioTimeStampHostTimeValid) } enum { kAudioChannelLabel_Unknown = 0xFFFFFFFF, kAudioChannelLabel_Unused = 0, kAudioChannelLabel_UseCoordinates = 100, kAudioChannelLabel_Left = 1, kAudioChannelLabel_Right = 2, kAudioChannelLabel_Center = 3, kAudioChannelLabel_LFEScreen = 4, kAudioChannelLabel_LeftSurround = 5, kAudioChannelLabel_RightSurround = 6, kAudioChannelLabel_LeftCenter = 7, kAudioChannelLabel_RightCenter = 8, kAudioChannelLabel_CenterSurround = 9, kAudioChannelLabel_LeftSurroundDirect = 10, kAudioChannelLabel_RightSurroundDirect = 11, kAudioChannelLabel_TopCenterSurround = 12, kAudioChannelLabel_VerticalHeightLeft = 13, kAudioChannelLabel_VerticalHeightCenter = 14, kAudioChannelLabel_VerticalHeightRight = 15, kAudioChannelLabel_TopBackLeft = 16, kAudioChannelLabel_TopBackCenter = 17, kAudioChannelLabel_TopBackRight = 18, kAudioChannelLabel_RearSurroundLeft = 33, kAudioChannelLabel_RearSurroundRight = 34, kAudioChannelLabel_LeftWide = 35, kAudioChannelLabel_RightWide = 36, kAudioChannelLabel_LFE2 = 37, kAudioChannelLabel_LeftTotal = 38, kAudioChannelLabel_RightTotal = 39, kAudioChannelLabel_HearingImpaired = 40, kAudioChannelLabel_Narration = 41, kAudioChannelLabel_Mono = 42, kAudioChannelLabel_DialogCentricMix = 43, kAudioChannelLabel_CenterSurroundDirect = 44, kAudioChannelLabel_Haptic = 45, kAudioChannelLabel_Ambisonic_W = 200, kAudioChannelLabel_Ambisonic_X = 201, kAudioChannelLabel_Ambisonic_Y = 202, kAudioChannelLabel_Ambisonic_Z = 203, kAudioChannelLabel_MS_Mid = 204, kAudioChannelLabel_MS_Side = 205, kAudioChannelLabel_XY_X = 206, kAudioChannelLabel_XY_Y = 207, kAudioChannelLabel_HeadphonesLeft = 301, kAudioChannelLabel_HeadphonesRight = 302, kAudioChannelLabel_ClickTrack = 304, kAudioChannelLabel_ForeignLanguage = 305, kAudioChannelLabel_Discrete = 400, kAudioChannelLabel_Discrete_0 = (1L<<16) | 0, kAudioChannelLabel_Discrete_1 = (1L<<16) | 1, kAudioChannelLabel_Discrete_2 = (1L<<16) | 2, kAudioChannelLabel_Discrete_3 = (1L<<16) | 3, kAudioChannelLabel_Discrete_4 = (1L<<16) | 4, kAudioChannelLabel_Discrete_5 = (1L<<16) | 5, kAudioChannelLabel_Discrete_6 = (1L<<16) | 6, kAudioChannelLabel_Discrete_7 = (1L<<16) | 7, kAudioChannelLabel_Discrete_8 = (1L<<16) | 8, kAudioChannelLabel_Discrete_9 = (1L<<16) | 9, kAudioChannelLabel_Discrete_10 = (1L<<16) | 10, kAudioChannelLabel_Discrete_11 = (1L<<16) | 11, kAudioChannelLabel_Discrete_12 = (1L<<16) | 12, kAudioChannelLabel_Discrete_13 = (1L<<16) | 13, kAudioChannelLabel_Discrete_14 = (1L<<16) | 14, kAudioChannelLabel_Discrete_15 = (1L<<16) | 15, kAudioChannelLabel_Discrete_65535 = (1L<<16) | 65535 } enum { kAudioChannelBit_Left = (1L<<0), kAudioChannelBit_Right = (1L<<1), kAudioChannelBit_Center = (1L<<2), kAudioChannelBit_LFEScreen = (1L<<3), kAudioChannelBit_LeftSurround = (1L<<4), kAudioChannelBit_RightSurround = (1L<<5), kAudioChannelBit_LeftCenter = (1L<<6), kAudioChannelBit_RightCenter = (1L<<7), kAudioChannelBit_CenterSurround = (1L<<8), kAudioChannelBit_LeftSurroundDirect = (1L<<9), kAudioChannelBit_RightSurroundDirect = (1L<<10), kAudioChannelBit_TopCenterSurround = (1L<<11), kAudioChannelBit_VerticalHeightLeft = (1L<<12), kAudioChannelBit_VerticalHeightCenter = (1L<<13), kAudioChannelBit_VerticalHeightRight = (1L<<14), kAudioChannelBit_TopBackLeft = (1L<<15), kAudioChannelBit_TopBackCenter = (1L<<16), kAudioChannelBit_TopBackRight = (1L<<17) } enum { kAudioChannelFlags_AllOff = 0, kAudioChannelFlags_RectangularCoordinates = (1L<<0), kAudioChannelFlags_SphericalCoordinates = (1L<<1), kAudioChannelFlags_Meters = (1L<<2) } enum { kAudioChannelCoordinates_LeftRight = 0, kAudioChannelCoordinates_BackFront = 1, kAudioChannelCoordinates_DownUp = 2, kAudioChannelCoordinates_Azimuth = 0, kAudioChannelCoordinates_Elevation = 1, kAudioChannelCoordinates_Distance = 2 } enum { kAudioChannelLayoutTag_UseChannelDescriptions = (0L<<16) | 0, kAudioChannelLayoutTag_UseChannelBitmap = (1L<<16) | 0, kAudioChannelLayoutTag_Mono = (100L<<16) | 1, kAudioChannelLayoutTag_Stereo = (101L<<16) | 2, kAudioChannelLayoutTag_StereoHeadphones = (102L<<16) | 2, kAudioChannelLayoutTag_MatrixStereo = (103L<<16) | 2, kAudioChannelLayoutTag_MidSide = (104L<<16) | 2, kAudioChannelLayoutTag_XY = (105L<<16) | 2, kAudioChannelLayoutTag_Binaural = (106L<<16) | 2, kAudioChannelLayoutTag_Ambisonic_B_Format = (107L<<16) | 4, kAudioChannelLayoutTag_Quadraphonic = (108L<<16) | 4, kAudioChannelLayoutTag_Pentagonal = (109L<<16) | 5, kAudioChannelLayoutTag_Hexagonal = (110L<<16) | 6, kAudioChannelLayoutTag_Octagonal = (111L<<16) | 8, kAudioChannelLayoutTag_Cube = (112L<<16) | 8, kAudioChannelLayoutTag_MPEG_1_0 = kAudioChannelLayoutTag_Mono, kAudioChannelLayoutTag_MPEG_2_0 = kAudioChannelLayoutTag_Stereo, kAudioChannelLayoutTag_MPEG_3_0_A = (113L<<16) | 3, kAudioChannelLayoutTag_MPEG_3_0_B = (114L<<16) | 3, kAudioChannelLayoutTag_MPEG_4_0_A = (115L<<16) | 4, kAudioChannelLayoutTag_MPEG_4_0_B = (116L<<16) | 4, kAudioChannelLayoutTag_MPEG_5_0_A = (117L<<16) | 5, kAudioChannelLayoutTag_MPEG_5_0_B = (118L<<16) | 5, kAudioChannelLayoutTag_MPEG_5_0_C = (119L<<16) | 5, kAudioChannelLayoutTag_MPEG_5_0_D = (120L<<16) | 5, kAudioChannelLayoutTag_MPEG_5_1_A = (121L<<16) | 6, kAudioChannelLayoutTag_MPEG_5_1_B = (122L<<16) | 6, kAudioChannelLayoutTag_MPEG_5_1_C = (123L<<16) | 6, kAudioChannelLayoutTag_MPEG_5_1_D = (124L<<16) | 6, kAudioChannelLayoutTag_MPEG_6_1_A = (125L<<16) | 7, kAudioChannelLayoutTag_MPEG_7_1_A = (126L<<16) | 8, kAudioChannelLayoutTag_MPEG_7_1_B = (127L<<16) | 8, kAudioChannelLayoutTag_MPEG_7_1_C = (128L<<16) | 8, kAudioChannelLayoutTag_Emagic_Default_7_1 = (129L<<16) | 8, kAudioChannelLayoutTag_SMPTE_DTV = (130L<<16) | 8, kAudioChannelLayoutTag_ITU_1_0 = kAudioChannelLayoutTag_Mono, kAudioChannelLayoutTag_ITU_2_0 = kAudioChannelLayoutTag_Stereo, kAudioChannelLayoutTag_ITU_2_1 = (131L<<16) | 3, kAudioChannelLayoutTag_ITU_2_2 = (132L<<16) | 4, kAudioChannelLayoutTag_ITU_3_0 = kAudioChannelLayoutTag_MPEG_3_0_A, kAudioChannelLayoutTag_ITU_3_1 = kAudioChannelLayoutTag_MPEG_4_0_A, kAudioChannelLayoutTag_ITU_3_2 = kAudioChannelLayoutTag_MPEG_5_0_A, kAudioChannelLayoutTag_ITU_3_2_1 = kAudioChannelLayoutTag_MPEG_5_1_A, kAudioChannelLayoutTag_ITU_3_4_1 = kAudioChannelLayoutTag_MPEG_7_1_C, kAudioChannelLayoutTag_DVD_0 = kAudioChannelLayoutTag_Mono, kAudioChannelLayoutTag_DVD_1 = kAudioChannelLayoutTag_Stereo, kAudioChannelLayoutTag_DVD_2 = kAudioChannelLayoutTag_ITU_2_1, kAudioChannelLayoutTag_DVD_3 = kAudioChannelLayoutTag_ITU_2_2, kAudioChannelLayoutTag_DVD_4 = (133L<<16) | 3, kAudioChannelLayoutTag_DVD_5 = (134L<<16) | 4, kAudioChannelLayoutTag_DVD_6 = (135L<<16) | 5, kAudioChannelLayoutTag_DVD_7 = kAudioChannelLayoutTag_MPEG_3_0_A, kAudioChannelLayoutTag_DVD_8 = kAudioChannelLayoutTag_MPEG_4_0_A, kAudioChannelLayoutTag_DVD_9 = kAudioChannelLayoutTag_MPEG_5_0_A, kAudioChannelLayoutTag_DVD_10 = (136L<<16) | 4, kAudioChannelLayoutTag_DVD_11 = (137L<<16) | 5, kAudioChannelLayoutTag_DVD_12 = kAudioChannelLayoutTag_MPEG_5_1_A, kAudioChannelLayoutTag_DVD_13 = kAudioChannelLayoutTag_DVD_8, kAudioChannelLayoutTag_DVD_14 = kAudioChannelLayoutTag_DVD_9, kAudioChannelLayoutTag_DVD_15 = kAudioChannelLayoutTag_DVD_10, kAudioChannelLayoutTag_DVD_16 = kAudioChannelLayoutTag_DVD_11, kAudioChannelLayoutTag_DVD_17 = kAudioChannelLayoutTag_DVD_12, kAudioChannelLayoutTag_DVD_18 = (138L<<16) | 5, kAudioChannelLayoutTag_DVD_19 = kAudioChannelLayoutTag_MPEG_5_0_B, kAudioChannelLayoutTag_DVD_20 = kAudioChannelLayoutTag_MPEG_5_1_B, kAudioChannelLayoutTag_AudioUnit_4 = kAudioChannelLayoutTag_Quadraphonic, kAudioChannelLayoutTag_AudioUnit_5 = kAudioChannelLayoutTag_Pentagonal, kAudioChannelLayoutTag_AudioUnit_6 = kAudioChannelLayoutTag_Hexagonal, kAudioChannelLayoutTag_AudioUnit_8 = kAudioChannelLayoutTag_Octagonal, kAudioChannelLayoutTag_AudioUnit_5_0 = kAudioChannelLayoutTag_MPEG_5_0_B, kAudioChannelLayoutTag_AudioUnit_6_0 = (139L<<16) | 6, kAudioChannelLayoutTag_AudioUnit_7_0 = (140L<<16) | 7, kAudioChannelLayoutTag_AudioUnit_7_0_Front = (148L<<16) | 7, kAudioChannelLayoutTag_AudioUnit_5_1 = kAudioChannelLayoutTag_MPEG_5_1_A, kAudioChannelLayoutTag_AudioUnit_6_1 = kAudioChannelLayoutTag_MPEG_6_1_A, kAudioChannelLayoutTag_AudioUnit_7_1 = kAudioChannelLayoutTag_MPEG_7_1_C, kAudioChannelLayoutTag_AudioUnit_7_1_Front = kAudioChannelLayoutTag_MPEG_7_1_A, kAudioChannelLayoutTag_AAC_3_0 = kAudioChannelLayoutTag_MPEG_3_0_B, kAudioChannelLayoutTag_AAC_Quadraphonic = kAudioChannelLayoutTag_Quadraphonic, kAudioChannelLayoutTag_AAC_4_0 = kAudioChannelLayoutTag_MPEG_4_0_B, kAudioChannelLayoutTag_AAC_5_0 = kAudioChannelLayoutTag_MPEG_5_0_D, kAudioChannelLayoutTag_AAC_5_1 = kAudioChannelLayoutTag_MPEG_5_1_D, kAudioChannelLayoutTag_AAC_6_0 = (141L<<16) | 6, kAudioChannelLayoutTag_AAC_6_1 = (142L<<16) | 7, kAudioChannelLayoutTag_AAC_7_0 = (143L<<16) | 7, kAudioChannelLayoutTag_AAC_7_1 = kAudioChannelLayoutTag_MPEG_7_1_B, kAudioChannelLayoutTag_AAC_Octagonal = (144L<<16) | 8, kAudioChannelLayoutTag_TMH_10_2_std = (145L<<16) | 16, kAudioChannelLayoutTag_TMH_10_2_full = (146L<<16) | 21, kAudioChannelLayoutTag_AC3_1_0_1 = (149L<<16) | 2, kAudioChannelLayoutTag_AC3_3_0 = (150L<<16) | 3, kAudioChannelLayoutTag_AC3_3_1 = (151L<<16) | 4, kAudioChannelLayoutTag_AC3_3_0_1 = (152L<<16) | 4, kAudioChannelLayoutTag_AC3_2_1_1 = (153L<<16) | 4, kAudioChannelLayoutTag_AC3_3_1_1 = (154L<<16) | 5, kAudioChannelLayoutTag_DiscreteInOrder = (147L<<16) | 0, kAudioChannelLayoutTag_Unknown = 0xFFFF0000 } enum { kMPEG4Object_AAC_Main = 1, kMPEG4Object_AAC_LC = 2, kMPEG4Object_AAC_SSR = 3, kMPEG4Object_AAC_LTP = 4, kMPEG4Object_AAC_SBR = 5, kMPEG4Object_AAC_Scalable = 6, kMPEG4Object_TwinVQ = 7, kMPEG4Object_CELP = 8, kMPEG4Object_HVXC = 9 } struct AudioValueRange { double mMinimum; double mMaximum; } struct AudioValueTranslation { void* mInputData; uint mInputDataSize; void* mOutputData; uint mOutputDataSize; } struct AudioBuffer { uint mNumberChannels; uint mDataByteSize; void* mData; } struct AudioBufferList { uint mNumberBuffers; AudioBuffer* mBuffers; } struct AudioStreamBasicDescription { double mSampleRate; uint mFormatID; uint mFormatFlags; uint mBytesPerPacket; uint mFramesPerPacket; uint mBytesPerFrame; uint mChannelsPerFrame; uint mBitsPerChannel; uint mReserved; } struct AudioStreamPacketDescription { long mStartOffset; uint mVariableFramesInPacket; uint mDataByteSize; } struct SMPTETime { short mSubframes; short mSubframeDivisor; uint mCounter; uint mType; uint mFlags; short mHours; short mMinutes; short mSeconds; short mFrames; } struct AudioTimeStamp { double mSampleTime; ulong mHostTime; double mRateScalar; ulong mWordClockTime; SMPTETime mSMPTETime; uint mFlags; uint mReserved; } struct AudioClassDescription { uint mType; uint mSubType; uint mManufacturer; } struct AudioChannelDescription { uint mChannelLabel; uint mChannelFlags; Float32* mCoordinates; } struct AudioChannelLayout { uint mChannelLayoutTag; uint mChannelBitmap; uint mNumberChannelDescriptions; AudioChannelDescription* mChannelDescriptions; }