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;
}