summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/Sound.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/Sound.h')
-rw-r--r--common/quicktime_win32/Sound.h3240
1 files changed, 3240 insertions, 0 deletions
diff --git a/common/quicktime_win32/Sound.h b/common/quicktime_win32/Sound.h
new file mode 100644
index 0000000..43876a9
--- /dev/null
+++ b/common/quicktime_win32/Sound.h
@@ -0,0 +1,3240 @@
+/*
+ File: Sound.h
+
+ Contains: Sound Manager Interfaces.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1986-2001 by Apple Computer, Inc., all rights reserved
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __SOUND__
+#define __SOUND__
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+#ifndef __COMPONENTS__
+#include <Components.h>
+#endif
+
+#ifndef __MIXEDMODE__
+#include <MixedMode.h>
+#endif
+
+#ifndef __DIALOGS__
+#include <Dialogs.h>
+#endif
+
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
+
+/*
+ * * * N O T E * * *
+
+ This file has been updated to include Sound Manager 3.3 interfaces.
+
+ Some of the Sound Manager 3.0 interfaces were not put into the InterfaceLib
+ that originally shipped with the PowerMacs. These missing functions and the
+ new 3.3 interfaces have been released in the SoundLib library for PowerPC
+ developers to link with. The runtime library for these functions are
+ installed by the Sound Manager. The following functions are found in SoundLib.
+
+ GetCompressionInfo(), GetSoundPreference(), SetSoundPreference(),
+ UnsignedFixedMulDiv(), SndGetInfo(), SndSetInfo(), GetSoundOutputInfo(),
+ SetSoundOutputInfo(), GetCompressionName(), SoundConverterOpen(),
+ SoundConverterClose(), SoundConverterGetBufferSizes(), SoundConverterBeginConversion(),
+ SoundConverterConvertBuffer(), SoundConverterEndConversion(),
+ AudioGetBass(), AudioGetInfo(), AudioGetMute(), AudioGetOutputDevice(),
+ AudioGetTreble(), AudioGetVolume(), AudioMuteOnEvent(), AudioSetBass(),
+ AudioSetMute(), AudioSetToDefaults(), AudioSetTreble(), AudioSetVolume(),
+ OpenMixerSoundComponent(), CloseMixerSoundComponent(), SoundComponentAddSource(),
+ SoundComponentGetInfo(), SoundComponentGetSource(), SoundComponentGetSourceData(),
+ SoundComponentInitOutputDevice(), SoundComponentPauseSource(),
+ SoundComponentPlaySourceBuffer(), SoundComponentRemoveSource(),
+ SoundComponentSetInfo(), SoundComponentSetOutput(), SoundComponentSetSource(),
+ SoundComponentStartSource(), SoundComponentStopSource(),
+ ParseAIFFHeader(), ParseSndHeader(), SoundConverterGetInfo(), SoundConverterSetInfo()
+*/
+/*
+ Interfaces for Sound Driver, !!! OBSOLETE and NOT SUPPORTED !!!
+
+ These items are no longer defined, but appear here so that someone
+ searching the interfaces might find them. If you are using one of these
+ items, you must change your code to support the Sound Manager.
+
+ swMode, ftMode, ffMode
+ FreeWave, FFSynthRec, Tone, SWSynthRec, Wave, FTSoundRec
+ SndCompletionProcPtr
+ StartSound, StopSound, SoundDone
+ SetSoundVol, GetSoundVol
+*/
+/*
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ constants
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*/
+#define twelfthRootTwo 1.05946309435
+
+enum {
+ soundListRsrc = FOUR_CHAR_CODE('snd '), /*Resource type used by Sound Manager*/
+ kSoundCodecInfoResourceType = FOUR_CHAR_CODE('snfo') /*Resource type holding codec information (optional public component resource)*/
+};
+
+enum {
+ kSimpleBeepID = 1 /*reserved resource ID for Simple Beep*/
+};
+
+enum {
+ rate48khz = (long)0xBB800000, /*48000.00000 in fixed-point*/
+ rate44khz = (long)0xAC440000, /*44100.00000 in fixed-point*/
+ rate32khz = 0x7D000000, /*32000.00000 in fixed-point*/
+ rate22050hz = 0x56220000, /*22050.00000 in fixed-point*/
+ rate22khz = 0x56EE8BA3, /*22254.54545 in fixed-point*/
+ rate16khz = 0x3E800000, /*16000.00000 in fixed-point*/
+ rate11khz = 0x2B7745D1, /*11127.27273 in fixed-point*/
+ rate11025hz = 0x2B110000, /*11025.00000 in fixed-point*/
+ rate8khz = 0x1F400000 /* 8000.00000 in fixed-point*/
+};
+
+/*synthesizer numbers for SndNewChannel*/
+enum {
+ sampledSynth = 5 /*sampled sound synthesizer*/
+};
+
+#if CALL_NOT_IN_CARBON
+enum {
+ squareWaveSynth = 1, /*square wave synthesizer*/
+ waveTableSynth = 3, /*wave table synthesizer*/
+ /*old Sound Manager MACE synthesizer numbers*/
+ MACE3snthID = 11,
+ MACE6snthID = 13
+};
+
+#endif /* CALL_NOT_IN_CARBON */
+
+enum {
+ kMiddleC = 60 /*MIDI note value for middle C*/
+};
+
+enum {
+ kNoVolume = 0, /*setting for no sound volume*/
+ kFullVolume = 0x0100 /*1.0, setting for full hardware output volume*/
+};
+
+enum {
+ stdQLength = 128
+};
+
+enum {
+ dataOffsetFlag = 0x8000
+};
+
+enum {
+ kUseOptionalOutputDevice = -1 /*only for Sound Manager 3.0 or later*/
+};
+
+enum {
+ notCompressed = 0, /*compression ID's*/
+ fixedCompression = -1, /*compression ID for fixed-sized compression*/
+ variableCompression = -2 /*compression ID for variable-sized compression*/
+};
+
+enum {
+ twoToOne = 1,
+ eightToThree = 2,
+ threeToOne = 3,
+ sixToOne = 4,
+ sixToOnePacketSize = 8,
+ threeToOnePacketSize = 16
+};
+
+enum {
+ stateBlockSize = 64,
+ leftOverBlockSize = 32
+};
+
+enum {
+ firstSoundFormat = 0x0001, /*general sound format*/
+ secondSoundFormat = 0x0002 /*special sampled sound format (HyperCard)*/
+};
+
+#if CALL_NOT_IN_CARBON
+enum {
+ dbBufferReady = 0x00000001, /*double buffer is filled*/
+ dbLastBuffer = 0x00000004 /*last double buffer to play*/
+};
+
+#endif /* CALL_NOT_IN_CARBON */
+
+enum {
+ sysBeepDisable = 0x0000, /*SysBeep() enable flags*/
+ sysBeepEnable = (1 << 0),
+ sysBeepSynchronous = (1 << 1) /*if bit set, make alert sounds synchronous*/
+};
+
+enum {
+ unitTypeNoSelection = 0xFFFF, /*unitTypes for AudioSelection.unitType*/
+ unitTypeSeconds = 0x0000
+};
+
+enum {
+ stdSH = 0x00, /*Standard sound header encode value*/
+ extSH = 0xFF, /*Extended sound header encode value*/
+ cmpSH = 0xFE /*Compressed sound header encode value*/
+};
+
+/*command numbers for SndDoCommand and SndDoImmediate*/
+enum {
+ nullCmd = 0,
+ quietCmd = 3,
+ flushCmd = 4,
+ reInitCmd = 5,
+ waitCmd = 10,
+ pauseCmd = 11,
+ resumeCmd = 12,
+ callBackCmd = 13,
+ syncCmd = 14,
+ availableCmd = 24,
+ versionCmd = 25,
+ volumeCmd = 46, /*sound manager 3.0 or later only*/
+ getVolumeCmd = 47, /*sound manager 3.0 or later only*/
+ clockComponentCmd = 50, /*sound manager 3.2.1 or later only*/
+ getClockComponentCmd = 51, /*sound manager 3.2.1 or later only*/
+ scheduledSoundCmd = 52, /*sound manager 3.3 or later only*/
+ linkSoundComponentsCmd = 53, /*sound manager 3.3 or later only*/
+ soundCmd = 80,
+ bufferCmd = 81,
+ rateMultiplierCmd = 86,
+ getRateMultiplierCmd = 87
+};
+
+#if CALL_NOT_IN_CARBON
+/*command numbers for SndDoCommand and SndDoImmediate that are not available for use in Carbon */
+enum {
+ initCmd = 1,
+ freeCmd = 2,
+ totalLoadCmd = 26,
+ loadCmd = 27,
+ freqDurationCmd = 40,
+ restCmd = 41,
+ freqCmd = 42,
+ ampCmd = 43,
+ timbreCmd = 44,
+ getAmpCmd = 45,
+ waveTableCmd = 60,
+ phaseCmd = 61,
+ rateCmd = 82,
+ continueCmd = 83,
+ doubleBufferCmd = 84,
+ getRateCmd = 85,
+ sizeCmd = 90, /*obsolete command*/
+ convertCmd = 91 /*obsolete MACE command*/
+};
+
+#endif /* CALL_NOT_IN_CARBON */
+
+#if OLDROUTINENAMES
+/*channel initialization parameters*/
+enum {
+ waveInitChannelMask = 0x07,
+ waveInitChannel0 = 0x04, /*wave table only, Sound Manager 2.0 and earlier*/
+ waveInitChannel1 = 0x05, /*wave table only, Sound Manager 2.0 and earlier*/
+ waveInitChannel2 = 0x06, /*wave table only, Sound Manager 2.0 and earlier*/
+ waveInitChannel3 = 0x07, /*wave table only, Sound Manager 2.0 and earlier*/
+ initChan0 = waveInitChannel0, /*obsolete spelling*/
+ initChan1 = waveInitChannel1, /*obsolete spelling*/
+ initChan2 = waveInitChannel2, /*obsolete spelling*/
+ initChan3 = waveInitChannel3 /*obsolete spelling*/
+};
+
+enum {
+ outsideCmpSH = 0, /*obsolete MACE constant*/
+ insideCmpSH = 1, /*obsolete MACE constant*/
+ aceSuccess = 0, /*obsolete MACE constant*/
+ aceMemFull = 1, /*obsolete MACE constant*/
+ aceNilBlock = 2, /*obsolete MACE constant*/
+ aceBadComp = 3, /*obsolete MACE constant*/
+ aceBadEncode = 4, /*obsolete MACE constant*/
+ aceBadDest = 5, /*obsolete MACE constant*/
+ aceBadCmd = 6 /*obsolete MACE constant*/
+};
+
+#endif /* OLDROUTINENAMES */
+
+enum {
+ initChanLeft = 0x0002, /*left stereo channel*/
+ initChanRight = 0x0003, /*right stereo channel*/
+ initNoInterp = 0x0004, /*no linear interpolation*/
+ initNoDrop = 0x0008, /*no drop-sample conversion*/
+ initMono = 0x0080, /*monophonic channel*/
+ initStereo = 0x00C0, /*stereo channel*/
+ initMACE3 = 0x0300, /*MACE 3:1*/
+ initMACE6 = 0x0400, /*MACE 6:1*/
+ initPanMask = 0x0003, /*mask for right/left pan values*/
+ initSRateMask = 0x0030, /*mask for sample rate values*/
+ initStereoMask = 0x00C0, /*mask for mono/stereo values*/
+ initCompMask = 0xFF00 /*mask for compression IDs*/
+};
+
+/*Get&Set Sound Information Selectors*/
+enum {
+ siActiveChannels = FOUR_CHAR_CODE('chac'), /*active channels*/
+ siActiveLevels = FOUR_CHAR_CODE('lmac'), /*active meter levels*/
+ siAGCOnOff = FOUR_CHAR_CODE('agc '), /*automatic gain control state*/
+ siAsync = FOUR_CHAR_CODE('asyn'), /*asynchronous capability*/
+ siAVDisplayBehavior = FOUR_CHAR_CODE('avdb'),
+ siChannelAvailable = FOUR_CHAR_CODE('chav'), /*number of channels available*/
+ siCompressionAvailable = FOUR_CHAR_CODE('cmav'), /*compression types available*/
+ siCompressionFactor = FOUR_CHAR_CODE('cmfa'), /*current compression factor*/
+ siCompressionHeader = FOUR_CHAR_CODE('cmhd'), /*return compression header*/
+ siCompressionNames = FOUR_CHAR_CODE('cnam'), /*compression type names available*/
+ siCompressionParams = FOUR_CHAR_CODE('evaw'), /*compression parameters*/
+ siCompressionSampleRate = FOUR_CHAR_CODE('cprt'), /* SetInfo only: compressor's sample rate*/
+ siCompressionChannels = FOUR_CHAR_CODE('cpct'), /* SetInfo only: compressor's number of channels*/
+ siCompressionOutputSampleRate = FOUR_CHAR_CODE('cort'), /* GetInfo only: only implemented by compressors that have differing in and out rates */
+ siCompressionInputRateList = FOUR_CHAR_CODE('crtl'), /* GetInfo only: only implemented by compressors that only take certain input rates */
+ siCompressionType = FOUR_CHAR_CODE('comp'), /*current compression type*/
+ siCompressionConfiguration = FOUR_CHAR_CODE('ccfg'), /*compression extensions*/
+ siContinuous = FOUR_CHAR_CODE('cont'), /*continous recording*/
+ siDecompressionParams = FOUR_CHAR_CODE('wave'), /*decompression parameters*/
+ siDecompressionConfiguration = FOUR_CHAR_CODE('dcfg'), /*decompression extensions*/
+ siDeviceBufferInfo = FOUR_CHAR_CODE('dbin'), /*size of interrupt buffer*/
+ siDeviceConnected = FOUR_CHAR_CODE('dcon'), /*input device connection status*/
+ siDeviceIcon = FOUR_CHAR_CODE('icon'), /*input device icon*/
+ siDeviceName = FOUR_CHAR_CODE('name'), /*input device name*/
+ siEQSpectrumBands = FOUR_CHAR_CODE('eqsb'), /* number of spectrum bands*/
+ siEQSpectrumLevels = FOUR_CHAR_CODE('eqlv'), /* gets spectum meter levels*/
+ siEQSpectrumOnOff = FOUR_CHAR_CODE('eqlo'), /* turn on/off spectum meter levels*/
+ siEQSpectrumResolution = FOUR_CHAR_CODE('eqrs'), /* set the resolution of the FFT, 0 = low res (<=16 bands), 1 = high res (16-64 bands)*/
+ siEQToneControlGain = FOUR_CHAR_CODE('eqtg'), /* set the bass and treble gain*/
+ siEQToneControlOnOff = FOUR_CHAR_CODE('eqtc'), /* turn on equalizer attenuation*/
+ siHardwareBalance = FOUR_CHAR_CODE('hbal'),
+ siHardwareBalanceSteps = FOUR_CHAR_CODE('hbls'),
+ siHardwareBass = FOUR_CHAR_CODE('hbas'),
+ siHardwareBassSteps = FOUR_CHAR_CODE('hbst'),
+ siHardwareBusy = FOUR_CHAR_CODE('hwbs'), /*sound hardware is in use*/
+ siHardwareFormat = FOUR_CHAR_CODE('hwfm'), /*get hardware format*/
+ siHardwareMute = FOUR_CHAR_CODE('hmut'), /*mute state of all hardware*/
+ siHardwareMuteNoPrefs = FOUR_CHAR_CODE('hmnp'), /*mute state of all hardware, but don't store in prefs */
+ siHardwareTreble = FOUR_CHAR_CODE('htrb'),
+ siHardwareTrebleSteps = FOUR_CHAR_CODE('hwts'),
+ siHardwareVolume = FOUR_CHAR_CODE('hvol'), /*volume level of all hardware*/
+ siHardwareVolumeSteps = FOUR_CHAR_CODE('hstp'), /*number of volume steps for hardware*/
+ siHeadphoneMute = FOUR_CHAR_CODE('pmut'), /*mute state of headphones*/
+ siHeadphoneVolume = FOUR_CHAR_CODE('pvol'), /*volume level of headphones*/
+ siHeadphoneVolumeSteps = FOUR_CHAR_CODE('hdst'), /*number of volume steps for headphones*/
+ siInputAvailable = FOUR_CHAR_CODE('inav'), /*input sources available*/
+ siInputGain = FOUR_CHAR_CODE('gain'), /*input gain*/
+ siInputSource = FOUR_CHAR_CODE('sour'), /*input source selector*/
+ siInputSourceNames = FOUR_CHAR_CODE('snam'), /*input source names*/
+ siLevelMeterOnOff = FOUR_CHAR_CODE('lmet'), /*level meter state*/
+ siModemGain = FOUR_CHAR_CODE('mgai'), /*modem input gain*/
+ siMonitorAvailable = FOUR_CHAR_CODE('mnav'),
+ siMonitorSource = FOUR_CHAR_CODE('mons'),
+ siNumberChannels = FOUR_CHAR_CODE('chan'), /*current number of channels*/
+ siOptionsDialog = FOUR_CHAR_CODE('optd'), /*display options dialog*/
+ siOSTypeInputSource = FOUR_CHAR_CODE('inpt'), /*input source by OSType*/
+ siOSTypeInputAvailable = FOUR_CHAR_CODE('inav'), /*list of available input source OSTypes*/
+ siOutputDeviceName = FOUR_CHAR_CODE('onam'), /*output device name*/
+ siPlayThruOnOff = FOUR_CHAR_CODE('plth'), /*playthrough state*/
+ siPostMixerSoundComponent = FOUR_CHAR_CODE('psmx'), /*install post-mixer effect*/
+ siPreMixerSoundComponent = FOUR_CHAR_CODE('prmx'), /*install pre-mixer effect*/
+ siQuality = FOUR_CHAR_CODE('qual'), /*quality setting*/
+ siRateMultiplier = FOUR_CHAR_CODE('rmul'), /*throttle rate setting*/
+ siRecordingQuality = FOUR_CHAR_CODE('qual'), /*recording quality*/
+ siSampleRate = FOUR_CHAR_CODE('srat'), /*current sample rate*/
+ siSampleRateAvailable = FOUR_CHAR_CODE('srav'), /*sample rates available*/
+ siSampleSize = FOUR_CHAR_CODE('ssiz'), /*current sample size*/
+ siSampleSizeAvailable = FOUR_CHAR_CODE('ssav'), /*sample sizes available*/
+ siSetupCDAudio = FOUR_CHAR_CODE('sucd'), /*setup sound hardware for CD audio*/
+ siSetupModemAudio = FOUR_CHAR_CODE('sumd'), /*setup sound hardware for modem audio*/
+ siSlopeAndIntercept = FOUR_CHAR_CODE('flap'), /*floating point variables for conversion*/
+ siSoundClock = FOUR_CHAR_CODE('sclk'),
+ siUseThisSoundClock = FOUR_CHAR_CODE('sclc'), /*sdev uses this to tell the mixer to use his sound clock*/
+ siSpeakerMute = FOUR_CHAR_CODE('smut'), /*mute state of all built-in speaker*/
+ siSpeakerVolume = FOUR_CHAR_CODE('svol'), /*volume level of built-in speaker*/
+ siSSpCPULoadLimit = FOUR_CHAR_CODE('3dll'),
+ siSSpLocalization = FOUR_CHAR_CODE('3dif'),
+ siSSpSpeakerSetup = FOUR_CHAR_CODE('3dst'),
+ siStereoInputGain = FOUR_CHAR_CODE('sgai'), /*stereo input gain*/
+ siSubwooferMute = FOUR_CHAR_CODE('bmut'), /*mute state of sub-woofer*/
+ siTerminalType = FOUR_CHAR_CODE('ttyp'), /* usb terminal type */
+ siTwosComplementOnOff = FOUR_CHAR_CODE('twos'), /*two's complement state*/
+ siVendorProduct = FOUR_CHAR_CODE('vpro'), /* vendor and product ID */
+ siVolume = FOUR_CHAR_CODE('volu'), /*volume level of source*/
+ siVoxRecordInfo = FOUR_CHAR_CODE('voxr'), /*VOX record parameters*/
+ siVoxStopInfo = FOUR_CHAR_CODE('voxs'), /*VOX stop parameters*/
+ siWideStereo = FOUR_CHAR_CODE('wide'), /*wide stereo setting*/
+ siSupportedExtendedFlags = FOUR_CHAR_CODE('exfl'), /*which flags are supported in Extended sound data structures*/
+ siRateConverterRollOffSlope = FOUR_CHAR_CODE('rcdb'), /*the roll-off slope for the rate converter's filter, in whole dB as a long this value is a long whose range is from 20 (worst quality/fastest performance) to 90 (best quality/slowest performance)*/
+ siOutputLatency = FOUR_CHAR_CODE('olte'), /*latency of sound output component*/
+ siHALAudioDeviceID = FOUR_CHAR_CODE('hlid'), /*audio device id*/
+ siHALAudioDeviceUniqueID = FOUR_CHAR_CODE('huid'), /*audio device unique id*/
+ siClientAcceptsVBR = FOUR_CHAR_CODE('cvbr'), /*client handles VBR*/
+ siSourceIsExhausted = FOUR_CHAR_CODE('srcx'), /*the ultimate source of data has run out (keep asking, but when you get nothing, that's it)*/
+ siMediaContextID = FOUR_CHAR_CODE('uuid'), /*media context id -- UUID */
+ siCompressionMaxPacketSize = FOUR_CHAR_CODE('cmxp'), /*maximum compressed packet size for current configuration -- unsigned long */
+ siAudioCodecPropertyValue = FOUR_CHAR_CODE('spva'), /*audio codec property value -- SoundAudioCodecPropertyRequestParams* */
+ siAudioCodecPropertyInfo = FOUR_CHAR_CODE('spin') /*audio codec property info -- SoundAudioCodecPropertyRequestParams* */
+};
+
+enum {
+ siCloseDriver = FOUR_CHAR_CODE('clos'), /*reserved for internal use only*/
+ siInitializeDriver = FOUR_CHAR_CODE('init'), /*reserved for internal use only*/
+ siPauseRecording = FOUR_CHAR_CODE('paus'), /*reserved for internal use only*/
+ siUserInterruptProc = FOUR_CHAR_CODE('user') /*reserved for internal use only*/
+};
+
+/* input source Types*/
+enum {
+ kInvalidSource = (long)0xFFFFFFFF, /*this source may be returned from GetInfo if no other source is the monitored source*/
+ kNoSource = FOUR_CHAR_CODE('none'), /*no source selection*/
+ kCDSource = FOUR_CHAR_CODE('cd '), /*internal CD player input*/
+ kExtMicSource = FOUR_CHAR_CODE('emic'), /*external mic input*/
+ kSoundInSource = FOUR_CHAR_CODE('sinj'), /*sound input jack*/
+ kRCAInSource = FOUR_CHAR_CODE('irca'), /*RCA jack input*/
+ kTVFMTunerSource = FOUR_CHAR_CODE('tvfm'),
+ kDAVInSource = FOUR_CHAR_CODE('idav'), /*DAV analog input*/
+ kIntMicSource = FOUR_CHAR_CODE('imic'), /*internal mic input*/
+ kMediaBaySource = FOUR_CHAR_CODE('mbay'), /*media bay input*/
+ kModemSource = FOUR_CHAR_CODE('modm'), /*modem input (internal modem on desktops, PCI input on PowerBooks)*/
+ kPCCardSource = FOUR_CHAR_CODE('pcm '), /*PC Card pwm input*/
+ kZoomVideoSource = FOUR_CHAR_CODE('zvpc'), /*zoom video input*/
+ kDVDSource = FOUR_CHAR_CODE('dvda'), /* DVD audio input*/
+ kMicrophoneArray = FOUR_CHAR_CODE('mica') /* microphone array*/
+};
+
+/*Sound Component Types and Subtypes*/
+enum {
+ kNoSoundComponentType = FOUR_CHAR_CODE('****'),
+ kSoundComponentType = FOUR_CHAR_CODE('sift'), /*component type*/
+ kSoundComponentPPCType = FOUR_CHAR_CODE('nift'), /*component type for PowerPC code*/
+ kRate8SubType = FOUR_CHAR_CODE('ratb'), /*8-bit rate converter*/
+ kRate16SubType = FOUR_CHAR_CODE('ratw'), /*16-bit rate converter*/
+ kConverterSubType = FOUR_CHAR_CODE('conv'), /*sample format converter*/
+ kSndSourceSubType = FOUR_CHAR_CODE('sour'), /*generic source component*/
+ kMixerType = FOUR_CHAR_CODE('mixr'),
+ kMixer8SubType = FOUR_CHAR_CODE('mixb'), /*8-bit mixer*/
+ kMixer16SubType = FOUR_CHAR_CODE('mixw'), /*16-bit mixer*/
+ kSoundInputDeviceType = FOUR_CHAR_CODE('sinp'), /*sound input component*/
+ kWaveInSubType = FOUR_CHAR_CODE('wavi'), /*Windows waveIn*/
+ kWaveInSnifferSubType = FOUR_CHAR_CODE('wisn'), /*Windows waveIn sniffer*/
+ kSoundOutputDeviceType = FOUR_CHAR_CODE('sdev'), /*sound output component*/
+ kClassicSubType = FOUR_CHAR_CODE('clas'), /*classic hardware, i.e. Mac Plus*/
+ kASCSubType = FOUR_CHAR_CODE('asc '), /*Apple Sound Chip device*/
+ kDSPSubType = FOUR_CHAR_CODE('dsp '), /*DSP device*/
+ kAwacsSubType = FOUR_CHAR_CODE('awac'), /*Another of Will's Audio Chips device*/
+ kGCAwacsSubType = FOUR_CHAR_CODE('awgc'), /*Awacs audio with Grand Central DMA*/
+ kSingerSubType = FOUR_CHAR_CODE('sing'), /*Singer (via Whitney) based sound*/
+ kSinger2SubType = FOUR_CHAR_CODE('sng2'), /*Singer 2 (via Whitney) for Acme*/
+ kWhitSubType = FOUR_CHAR_CODE('whit'), /*Whit sound component for PrimeTime 3*/
+ kSoundBlasterSubType = FOUR_CHAR_CODE('sbls'), /*Sound Blaster for CHRP*/
+ kWaveOutSubType = FOUR_CHAR_CODE('wavo'), /*Windows waveOut*/
+ kWaveOutSnifferSubType = FOUR_CHAR_CODE('wosn'), /*Windows waveOut sniffer*/
+ kDirectSoundSubType = FOUR_CHAR_CODE('dsnd'), /*Windows DirectSound*/
+ kDirectSoundSnifferSubType = FOUR_CHAR_CODE('dssn'), /*Windows DirectSound sniffer*/
+ kUNIXsdevSubType = FOUR_CHAR_CODE('un1x'), /*UNIX base sdev*/
+ kUSBSubType = FOUR_CHAR_CODE('usb '), /*USB device*/
+ kBlueBoxSubType = FOUR_CHAR_CODE('bsnd'), /*Blue Box sound component*/
+ kHALCustomComponentSubType = FOUR_CHAR_CODE('halx'), /*Registered by the HAL output component ('hal!') for each HAL output device*/
+ kSoundCompressor = FOUR_CHAR_CODE('scom'),
+ kSoundDecompressor = FOUR_CHAR_CODE('sdec'),
+ kAudioComponentType = FOUR_CHAR_CODE('adio'), /*Audio components and sub-types*/
+ kAwacsPhoneSubType = FOUR_CHAR_CODE('hphn'),
+ kAudioVisionSpeakerSubType = FOUR_CHAR_CODE('telc'),
+ kAudioVisionHeadphoneSubType = FOUR_CHAR_CODE('telh'),
+ kPhilipsFaderSubType = FOUR_CHAR_CODE('tvav'),
+ kSGSToneSubType = FOUR_CHAR_CODE('sgs0'),
+ kSoundEffectsType = FOUR_CHAR_CODE('snfx'), /*sound effects type*/
+ kEqualizerSubType = FOUR_CHAR_CODE('eqal'), /*frequency equalizer*/
+ kSSpLocalizationSubType = FOUR_CHAR_CODE('snd3')
+};
+
+/*Format Types*/
+enum {
+ kSoundNotCompressed = FOUR_CHAR_CODE('NONE'), /*sound is not compressed*/
+ k8BitOffsetBinaryFormat = FOUR_CHAR_CODE('raw '), /*8-bit offset binary*/
+ k16BitBigEndianFormat = FOUR_CHAR_CODE('twos'), /*16-bit big endian*/
+ k16BitLittleEndianFormat = FOUR_CHAR_CODE('sowt'), /*16-bit little endian*/
+ kFloat32Format = FOUR_CHAR_CODE('fl32'), /*32-bit floating point*/
+ kFloat64Format = FOUR_CHAR_CODE('fl64'), /*64-bit floating point*/
+ k24BitFormat = FOUR_CHAR_CODE('in24'), /*24-bit integer*/
+ k32BitFormat = FOUR_CHAR_CODE('in32'), /*32-bit integer*/
+ k32BitLittleEndianFormat = FOUR_CHAR_CODE('23ni'), /*32-bit little endian integer */
+ kMACE3Compression = FOUR_CHAR_CODE('MAC3'), /*MACE 3:1*/
+ kMACE6Compression = FOUR_CHAR_CODE('MAC6'), /*MACE 6:1*/
+ kCDXA4Compression = FOUR_CHAR_CODE('cdx4'), /*CD/XA 4:1*/
+ kCDXA2Compression = FOUR_CHAR_CODE('cdx2'), /*CD/XA 2:1*/
+ kIMACompression = FOUR_CHAR_CODE('ima4'), /*IMA 4:1*/
+ kULawCompression = FOUR_CHAR_CODE('ulaw'), /*.Law 2:1*/
+ kALawCompression = FOUR_CHAR_CODE('alaw'), /*aLaw 2:1*/
+ kMicrosoftADPCMFormat = 0x6D730002, /*Microsoft ADPCM - ACM code 2*/
+ kDVIIntelIMAFormat = 0x6D730011, /*DVI/Intel IMA ADPCM - ACM code 17*/
+ kMicrosoftGSMCompression = 0x6D730031, /*Microsoft GSM 6.10 - ACM code 49*/
+ kDVAudioFormat = FOUR_CHAR_CODE('dvca'), /*DV Audio*/
+ kQDesignCompression = FOUR_CHAR_CODE('QDMC'), /*QDesign music*/
+ kQDesign2Compression = FOUR_CHAR_CODE('QDM2'), /*QDesign2 music*/
+ kQUALCOMMCompression = FOUR_CHAR_CODE('Qclp'), /*QUALCOMM PureVoice*/
+ kOffsetBinary = k8BitOffsetBinaryFormat, /*for compatibility*/
+ kTwosComplement = k16BitBigEndianFormat, /*for compatibility*/
+ kLittleEndianFormat = k16BitLittleEndianFormat, /*for compatibility*/
+ kMPEGLayer3Format = 0x6D730055, /*MPEG Layer 3, CBR only (pre QT4.1)*/
+ kFullMPEGLay3Format = FOUR_CHAR_CODE('.mp3'), /*MPEG Layer 3, CBR & VBR (QT4.1 and later)*/
+ kVariableDurationDVAudioFormat = FOUR_CHAR_CODE('vdva') /*Variable Duration DV Audio*/
+};
+
+#if TARGET_RT_LITTLE_ENDIAN
+enum {
+ k16BitNativeEndianFormat = k16BitLittleEndianFormat,
+ k16BitNonNativeEndianFormat = k16BitBigEndianFormat
+};
+
+#else
+enum {
+ k16BitNativeEndianFormat = k16BitBigEndianFormat,
+ k16BitNonNativeEndianFormat = k16BitLittleEndianFormat
+};
+
+#endif /* TARGET_RT_LITTLE_ENDIAN */
+
+/*Features Flags*/
+enum {
+ k8BitRawIn = (1 << 0), /*data description*/
+ k8BitTwosIn = (1 << 1),
+ k16BitIn = (1 << 2),
+ kStereoIn = (1 << 3),
+ k8BitRawOut = (1 << 8),
+ k8BitTwosOut = (1 << 9),
+ k16BitOut = (1 << 10),
+ kStereoOut = (1 << 11),
+ kReverse = (1L << 16), /* function description*/
+ kRateConvert = (1L << 17),
+ kCreateSoundSource = (1L << 18),
+ kVMAwareness = (1L << 21), /* component will hold its memory*/
+ kHighQuality = (1L << 22), /* performance description*/
+ kNonRealTime = (1L << 23)
+};
+
+/*'snfo' Resource Feature Flags*/
+enum {
+ kSoundCodecInfoFixedCompression = (1L << 0), /* has fixed compression format*/
+ kSoundCodecInfoVariableCompression = (1L << 1), /* has variable compression format*/
+ kSoundCodecInfoHasRestrictedInputRates = (1L << 2), /* compressor has restricted set of input sample rates*/
+ kSoundCodecInfoCanChangeOutputRate = (1L << 3), /* compressor may output a different sample rate than it receives*/
+ kSoundCodecInfoRequiresExternalFraming = (1L << 4), /* format requires external framing information during decode/encode*/
+ kSoundCodecInfoVariableDuration = (1L << 5) /* audio packets can vary in duration*/
+};
+
+/*SoundComponentPlaySourceBuffer action flags*/
+enum {
+ kSourcePaused = (1 << 0),
+ kPassThrough = (1L << 16),
+ kNoSoundComponentChain = (1L << 17)
+};
+
+/*SoundParamBlock flags, usefull for OpenMixerSoundComponent*/
+enum {
+ kNoMixing = (1 << 0), /*don't mix source*/
+ kNoSampleRateConversion = (1 << 1), /*don't convert sample rate (i.e. 11 kHz -> 22 kHz)*/
+ kNoSampleSizeConversion = (1 << 2), /*don't convert sample size (i.e. 16 -> 8)*/
+ kNoSampleFormatConversion = (1 << 3), /*don't convert sample format (i.e. 'twos' -> 'raw ')*/
+ kNoChannelConversion = (1 << 4), /*don't convert stereo/mono*/
+ kNoDecompression = (1 << 5), /*don't decompress (i.e. 'MAC3' -> 'raw ')*/
+ kNoVolumeConversion = (1 << 6), /*don't apply volume*/
+ kNoRealtimeProcessing = (1 << 7), /*won't run at interrupt time*/
+ kScheduledSource = (1 << 8), /*source is scheduled*/
+ kNonInterleavedBuffer = (1 << 9), /*buffer is not interleaved samples*/
+ kNonPagingMixer = (1 << 10), /*if VM is on, use the non-paging mixer*/
+ kSoundConverterMixer = (1 << 11), /*the mixer is to be used by the SoundConverter*/
+ kPagingMixer = (1 << 12), /*the mixer is to be used as a paging mixer when VM is on*/
+ kVMAwareMixer = (1 << 13), /*passed to the output device when the SM is going to deal with VM safety*/
+ kExtendedSoundData = (1 << 14) /*SoundComponentData record is actually an ExtendedSoundComponentData*/
+};
+
+/*SoundParamBlock quality settings*/
+enum {
+ kBestQuality = (1 << 0) /*use interpolation in rate conversion*/
+};
+
+/*useful bit masks*/
+enum {
+ kInputMask = 0x000000FF, /*masks off input bits*/
+ kOutputMask = 0x0000FF00, /*masks off output bits*/
+ kOutputShift = 8, /*amount output bits are shifted*/
+ kActionMask = 0x00FF0000, /*masks off action bits*/
+ kSoundComponentBits = 0x00FFFFFF
+};
+
+/*audio atom types*/
+enum {
+ kAudioFormatAtomType = FOUR_CHAR_CODE('frma'),
+ kAudioEndianAtomType = FOUR_CHAR_CODE('enda'),
+ kAudioVBRAtomType = FOUR_CHAR_CODE('vbra'),
+ kAudioTerminatorAtomType = 0
+};
+
+/*siAVDisplayBehavior types*/
+enum {
+ kAVDisplayHeadphoneRemove = 0, /* monitor does not have a headphone attached*/
+ kAVDisplayHeadphoneInsert = 1, /* monitor has a headphone attached*/
+ kAVDisplayPlainTalkRemove = 2, /* monitor either sending no input through CPU input port or unable to tell if input is coming in*/
+ kAVDisplayPlainTalkInsert = 3 /* monitor sending PlainTalk level microphone source input through sound input port*/
+};
+
+/*Audio Component constants*/
+enum {
+ /*Values for whichChannel parameter*/
+ audioAllChannels = 0, /*All channels (usually interpreted as both left and right)*/
+ audioLeftChannel = 1, /*Left channel*/
+ audioRightChannel = 2, /*Right channel*/
+ /*Values for mute parameter*/
+ audioUnmuted = 0, /*Device is unmuted*/
+ audioMuted = 1, /*Device is muted*/
+ /*Capabilities flags definitions*/
+ audioDoesMono = (1L << 0), /*Device supports mono output*/
+ audioDoesStereo = (1L << 1), /*Device supports stereo output*/
+ audioDoesIndependentChannels = (1L << 2) /*Device supports independent software control of each channel*/
+};
+
+/*Sound Input Qualities*/
+enum {
+ siCDQuality = FOUR_CHAR_CODE('cd '), /*44.1kHz, stereo, 16 bit*/
+ siBestQuality = FOUR_CHAR_CODE('best'), /*22kHz, mono, 8 bit*/
+ siBetterQuality = FOUR_CHAR_CODE('betr'), /*22kHz, mono, MACE 3:1*/
+ siGoodQuality = FOUR_CHAR_CODE('good'), /*22kHz, mono, MACE 6:1*/
+ siNoneQuality = FOUR_CHAR_CODE('none') /*settings don't match any quality for a get call*/
+};
+
+enum {
+ siDeviceIsConnected = 1, /*input device is connected and ready for input*/
+ siDeviceNotConnected = 0, /*input device is not connected*/
+ siDontKnowIfConnected = -1, /*can't tell if input device is connected*/
+ siReadPermission = 0, /*permission passed to SPBOpenDevice*/
+ siWritePermission = 1 /*permission passed to SPBOpenDevice*/
+};
+
+/*flags that SoundConverterFillBuffer will return*/
+enum {
+ kSoundConverterDidntFillBuffer = (1 << 0), /*set if the converter couldn't completely satisfy a SoundConverterFillBuffer request*/
+ kSoundConverterHasLeftOverData = (1 << 1) /*set if the converter had left over data after completely satisfying a SoundConverterFillBuffer call*/
+};
+
+/* flags for extendedFlags fields of ExtendedSoundComponentData, ExtendedSoundParamBlock, and ExtendedScheduledSoundHeader*/
+enum {
+ kExtendedSoundSampleCountNotValid = 1L << 0, /* set if sampleCount of SoundComponentData isn't meaningful; use buffer size instead*/
+ kExtendedSoundBufferSizeValid = 1L << 1, /* set if bufferSize field is valid*/
+ kExtendedSoundFrameSizesValid = 1L << 2, /* set if frameSizesArray is valid (will be nil if all sizes are common and kExtendedSoundCommonFrameSizeValid is set*/
+ kExtendedSoundCommonFrameSizeValid = 1L << 3, /* set if all audio frames have the same size and the commonFrameSize field is valid*/
+ kExtendedSoundExtensionsValid = 1L << 4, /* set if pointer to extensions array is valid*/
+ kExtendedSoundBufferFlagsValid = 1L << 5 /* set if buffer flags field is valid*/
+};
+
+/* flags passed in bufferFlags/bufferFlagsMask extended fields if kExtendedSoundBufferFlagsValid extended flag is set*/
+enum {
+ kExtendedSoundBufferIsDiscontinuous = 1L << 0, /* buffer is discontinuous with previous buffer*/
+ kExtendedSoundBufferIsFirstBuffer = 1L << 1 /* buffer is first buffer*/
+};
+
+/*
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ typedefs
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*/
+
+struct SndCommand {
+ unsigned short cmd;
+ short param1;
+ long param2;
+};
+typedef struct SndCommand SndCommand;
+typedef struct SndChannel SndChannel;
+
+typedef SndChannel * SndChannelPtr;
+typedef CALLBACK_API( void , SndCallBackProcPtr )(SndChannelPtr chan, SndCommand *cmd);
+typedef STACK_UPP_TYPE(SndCallBackProcPtr) SndCallBackUPP;
+struct SndChannel {
+ SndChannelPtr nextChan;
+ Ptr firstMod; /* reserved for the Sound Manager */
+ SndCallBackUPP callBack;
+ long userInfo;
+ long wait; /* The following is for internal Sound Manager use only.*/
+ SndCommand cmdInProgress;
+ short flags;
+ short qLength;
+ short qHead;
+ short qTail;
+ SndCommand queue[128];
+};
+
+/*
+ * NewSndCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( SndCallBackUPP )
+NewSndCallBackUPP(SndCallBackProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppSndCallBackProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(SndCallBackUPP) NewSndCallBackUPP(SndCallBackProcPtr userRoutine) { return (SndCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSndCallBackProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewSndCallBackUPP(userRoutine) (SndCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSndCallBackProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeSndCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeSndCallBackUPP(SndCallBackUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeSndCallBackUPP(SndCallBackUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeSndCallBackUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeSndCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+InvokeSndCallBackUPP(
+ SndChannelPtr chan,
+ SndCommand * cmd,
+ SndCallBackUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) InvokeSndCallBackUPP(SndChannelPtr chan, SndCommand * cmd, SndCallBackUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppSndCallBackProcInfo, chan, cmd); }
+ #else
+ #define InvokeSndCallBackUPP(chan, cmd, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppSndCallBackProcInfo, (chan), (cmd))
+ #endif
+#endif
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewSndCallBackProc(userRoutine) NewSndCallBackUPP(userRoutine)
+ #define CallSndCallBackProc(userRoutine, chan, cmd) InvokeSndCallBackUPP(chan, cmd, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+/*MACE structures*/
+struct StateBlock {
+ short stateVar[64];
+};
+typedef struct StateBlock StateBlock;
+typedef StateBlock * StateBlockPtr;
+struct LeftOverBlock {
+ unsigned long count;
+ SInt8 sampleArea[32];
+};
+typedef struct LeftOverBlock LeftOverBlock;
+typedef LeftOverBlock * LeftOverBlockPtr;
+struct ModRef {
+ unsigned short modNumber;
+ long modInit;
+};
+typedef struct ModRef ModRef;
+struct SndListResource {
+ short format;
+ short numModifiers;
+ ModRef modifierPart[1];
+ short numCommands;
+ SndCommand commandPart[1];
+ UInt8 dataPart[1];
+};
+typedef struct SndListResource SndListResource;
+typedef SndListResource * SndListPtr;
+typedef SndListPtr * SndListHandle;
+typedef SndListHandle SndListHndl;
+/*HyperCard sound resource format*/
+struct Snd2ListResource {
+ short format;
+ short refCount;
+ short numCommands;
+ SndCommand commandPart[1];
+ UInt8 dataPart[1];
+};
+typedef struct Snd2ListResource Snd2ListResource;
+typedef Snd2ListResource * Snd2ListPtr;
+typedef Snd2ListPtr * Snd2ListHandle;
+typedef Snd2ListHandle Snd2ListHndl;
+struct SoundHeader {
+ Ptr samplePtr; /*if NIL then samples are in sampleArea*/
+ unsigned long length; /*length of sound in bytes*/
+ UnsignedFixed sampleRate; /*sample rate for this sound*/
+ unsigned long loopStart; /*start of looping portion*/
+ unsigned long loopEnd; /*end of looping portion*/
+ UInt8 encode; /*header encoding*/
+ UInt8 baseFrequency; /*baseFrequency value*/
+ UInt8 sampleArea[1]; /*space for when samples follow directly*/
+};
+typedef struct SoundHeader SoundHeader;
+typedef SoundHeader * SoundHeaderPtr;
+struct CmpSoundHeader {
+ Ptr samplePtr; /*if nil then samples are in sample area*/
+ unsigned long numChannels; /*number of channels i.e. mono = 1*/
+ UnsignedFixed sampleRate; /*sample rate in Apples Fixed point representation*/
+ unsigned long loopStart; /*loopStart of sound before compression*/
+ unsigned long loopEnd; /*loopEnd of sound before compression*/
+ UInt8 encode; /*data structure used , stdSH, extSH, or cmpSH*/
+ UInt8 baseFrequency; /*same meaning as regular SoundHeader*/
+ unsigned long numFrames; /*length in frames ( packetFrames or sampleFrames )*/
+ extended80 AIFFSampleRate; /*IEEE sample rate*/
+ Ptr markerChunk; /*sync track*/
+ OSType format; /*data format type, was futureUse1*/
+ unsigned long futureUse2; /*reserved by Apple*/
+ StateBlockPtr stateVars; /*pointer to State Block*/
+ LeftOverBlockPtr leftOverSamples; /*used to save truncated samples between compression calls*/
+ short compressionID; /*0 means no compression, non zero means compressionID*/
+ unsigned short packetSize; /*number of bits in compressed sample packet*/
+ unsigned short snthID; /*resource ID of Sound Manager snth that contains NRT C/E*/
+ unsigned short sampleSize; /*number of bits in non-compressed sample*/
+ UInt8 sampleArea[1]; /*space for when samples follow directly*/
+};
+typedef struct CmpSoundHeader CmpSoundHeader;
+typedef CmpSoundHeader * CmpSoundHeaderPtr;
+struct ExtSoundHeader {
+ Ptr samplePtr; /*if nil then samples are in sample area*/
+ unsigned long numChannels; /*number of channels, ie mono = 1*/
+ UnsignedFixed sampleRate; /*sample rate in Apples Fixed point representation*/
+ unsigned long loopStart; /*same meaning as regular SoundHeader*/
+ unsigned long loopEnd; /*same meaning as regular SoundHeader*/
+ UInt8 encode; /*data structure used , stdSH, extSH, or cmpSH*/
+ UInt8 baseFrequency; /*same meaning as regular SoundHeader*/
+ unsigned long numFrames; /*length in total number of frames*/
+ extended80 AIFFSampleRate; /*IEEE sample rate*/
+ Ptr markerChunk; /*sync track*/
+ Ptr instrumentChunks; /*AIFF instrument chunks*/
+ Ptr AESRecording;
+ unsigned short sampleSize; /*number of bits in sample*/
+ unsigned short futureUse1; /*reserved by Apple*/
+ unsigned long futureUse2; /*reserved by Apple*/
+ unsigned long futureUse3; /*reserved by Apple*/
+ unsigned long futureUse4; /*reserved by Apple*/
+ UInt8 sampleArea[1]; /*space for when samples follow directly*/
+};
+typedef struct ExtSoundHeader ExtSoundHeader;
+typedef ExtSoundHeader * ExtSoundHeaderPtr;
+union SoundHeaderUnion {
+ SoundHeader stdHeader;
+ CmpSoundHeader cmpHeader;
+ ExtSoundHeader extHeader;
+};
+typedef union SoundHeaderUnion SoundHeaderUnion;
+struct ConversionBlock {
+ short destination;
+ short unused;
+ CmpSoundHeaderPtr inputPtr;
+ CmpSoundHeaderPtr outputPtr;
+};
+typedef struct ConversionBlock ConversionBlock;
+typedef ConversionBlock * ConversionBlockPtr;
+/* ScheduledSoundHeader flags*/
+enum {
+ kScheduledSoundDoScheduled = 1 << 0,
+ kScheduledSoundDoCallBack = 1 << 1,
+ kScheduledSoundExtendedHdr = 1 << 2
+};
+
+struct ScheduledSoundHeader {
+ SoundHeaderUnion u;
+ long flags;
+ short reserved;
+ short callBackParam1;
+ long callBackParam2;
+ TimeRecord startTime;
+};
+typedef struct ScheduledSoundHeader ScheduledSoundHeader;
+typedef ScheduledSoundHeader * ScheduledSoundHeaderPtr;
+struct ExtendedScheduledSoundHeader {
+ SoundHeaderUnion u;
+ long flags;
+ short reserved;
+ short callBackParam1;
+ long callBackParam2;
+ TimeRecord startTime;
+ long recordSize;
+ long extendedFlags;
+ long bufferSize;
+ long frameCount; /* number of audio frames*/
+ long * frameSizesArray; /* pointer to array of longs with frame sizes in bytes*/
+ long commonFrameSize; /* size of each frame if common*/
+ void * extensionsPtr; /*pointer to set of classic atoms (size,type,data,...)*/
+ long extensionsSize; /*size of extensions data (extensionsPtr)*/
+ unsigned long bufferFlags; /*set or cleared flags*/
+ unsigned long bufferFlagsMask; /*which flags are valid*/
+};
+typedef struct ExtendedScheduledSoundHeader ExtendedScheduledSoundHeader;
+typedef ExtendedScheduledSoundHeader * ExtendedScheduledSoundHeaderPtr;
+struct SMStatus {
+ short smMaxCPULoad;
+ short smNumChannels;
+ short smCurCPULoad;
+};
+typedef struct SMStatus SMStatus;
+typedef SMStatus * SMStatusPtr;
+struct SCStatus {
+ UnsignedFixed scStartTime;
+ UnsignedFixed scEndTime;
+ UnsignedFixed scCurrentTime;
+ Boolean scChannelBusy;
+ Boolean scChannelDisposed;
+ Boolean scChannelPaused;
+ Boolean scUnused;
+ unsigned long scChannelAttributes;
+ long scCPULoad;
+};
+typedef struct SCStatus SCStatus;
+typedef SCStatus * SCStatusPtr;
+struct AudioSelection {
+ long unitType;
+ UnsignedFixed selStart;
+ UnsignedFixed selEnd;
+};
+typedef struct AudioSelection AudioSelection;
+typedef AudioSelection * AudioSelectionPtr;
+#if CALL_NOT_IN_CARBON
+struct SndDoubleBuffer {
+ long dbNumFrames;
+ long dbFlags;
+ long dbUserInfo[2];
+ SInt8 dbSoundData[1];
+};
+typedef struct SndDoubleBuffer SndDoubleBuffer;
+typedef SndDoubleBuffer * SndDoubleBufferPtr;
+
+
+typedef CALLBACK_API( void , SndDoubleBackProcPtr )(SndChannelPtr channel, SndDoubleBufferPtr doubleBufferPtr);
+typedef STACK_UPP_TYPE(SndDoubleBackProcPtr) SndDoubleBackUPP;
+#if CALL_NOT_IN_CARBON
+/*
+ * NewSndDoubleBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( SndDoubleBackUPP )
+NewSndDoubleBackUPP(SndDoubleBackProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppSndDoubleBackProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(SndDoubleBackUPP) NewSndDoubleBackUPP(SndDoubleBackProcPtr userRoutine) { return (SndDoubleBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSndDoubleBackProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewSndDoubleBackUPP(userRoutine) (SndDoubleBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSndDoubleBackProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeSndDoubleBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( void )
+DisposeSndDoubleBackUPP(SndDoubleBackUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeSndDoubleBackUPP(SndDoubleBackUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeSndDoubleBackUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeSndDoubleBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( void )
+InvokeSndDoubleBackUPP(
+ SndChannelPtr channel,
+ SndDoubleBufferPtr doubleBufferPtr,
+ SndDoubleBackUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) InvokeSndDoubleBackUPP(SndChannelPtr channel, SndDoubleBufferPtr doubleBufferPtr, SndDoubleBackUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppSndDoubleBackProcInfo, channel, doubleBufferPtr); }
+ #else
+ #define InvokeSndDoubleBackUPP(channel, doubleBufferPtr, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppSndDoubleBackProcInfo, (channel), (doubleBufferPtr))
+ #endif
+#endif
+
+#endif /* CALL_NOT_IN_CARBON */
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewSndDoubleBackProc(userRoutine) NewSndDoubleBackUPP(userRoutine)
+ #define CallSndDoubleBackProc(userRoutine, channel, doubleBufferPtr) InvokeSndDoubleBackUPP(channel, doubleBufferPtr, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+struct SndDoubleBufferHeader {
+ short dbhNumChannels;
+ short dbhSampleSize;
+ short dbhCompressionID;
+ short dbhPacketSize;
+ UnsignedFixed dbhSampleRate;
+ SndDoubleBufferPtr dbhBufferPtr[2];
+ SndDoubleBackUPP dbhDoubleBack;
+};
+typedef struct SndDoubleBufferHeader SndDoubleBufferHeader;
+typedef SndDoubleBufferHeader * SndDoubleBufferHeaderPtr;
+struct SndDoubleBufferHeader2 {
+ short dbhNumChannels;
+ short dbhSampleSize;
+ short dbhCompressionID;
+ short dbhPacketSize;
+ UnsignedFixed dbhSampleRate;
+ SndDoubleBufferPtr dbhBufferPtr[2];
+ SndDoubleBackUPP dbhDoubleBack;
+ OSType dbhFormat;
+};
+typedef struct SndDoubleBufferHeader2 SndDoubleBufferHeader2;
+typedef SndDoubleBufferHeader2 * SndDoubleBufferHeader2Ptr;
+#endif /* CALL_NOT_IN_CARBON */
+
+struct SoundInfoList {
+ short count;
+ Handle infoHandle;
+};
+typedef struct SoundInfoList SoundInfoList;
+typedef SoundInfoList * SoundInfoListPtr;
+struct SoundComponentData {
+ long flags;
+ OSType format;
+ short numChannels;
+ short sampleSize;
+ UnsignedFixed sampleRate;
+ long sampleCount;
+ Byte * buffer;
+ long reserved;
+};
+typedef struct SoundComponentData SoundComponentData;
+typedef SoundComponentData * SoundComponentDataPtr;
+struct ExtendedSoundComponentData {
+ SoundComponentData desc; /*description of sound buffer*/
+ long recordSize; /*size of this record in bytes*/
+ long extendedFlags; /*flags for extended record*/
+ long bufferSize; /*size of buffer in bytes*/
+ long frameCount; /*number of audio frames*/
+ long * frameSizesArray; /*pointer to array of longs with frame sizes in bytes*/
+ long commonFrameSize; /*size of each frame if common*/
+ void * extensionsPtr; /*pointer to set of classic atoms (size,type,data,...)*/
+ long extensionsSize; /*size of extensions data (extensionsPtr)*/
+ unsigned long bufferFlags; /*set or cleared flags*/
+ unsigned long bufferFlagsMask; /*which flags are valid*/
+};
+typedef struct ExtendedSoundComponentData ExtendedSoundComponentData;
+typedef ExtendedSoundComponentData * ExtendedSoundComponentDataPtr;
+typedef struct SoundParamBlock SoundParamBlock;
+typedef SoundParamBlock * SoundParamBlockPtr;
+typedef CALLBACK_API( Boolean , SoundParamProcPtr )(SoundParamBlockPtr * pb);
+typedef STACK_UPP_TYPE(SoundParamProcPtr) SoundParamUPP;
+struct SoundParamBlock {
+ long recordSize; /*size of this record in bytes*/
+ SoundComponentData desc; /*description of sound buffer*/
+ UnsignedFixed rateMultiplier; /*rate multiplier to apply to sound*/
+ short leftVolume; /*volumes to apply to sound*/
+ short rightVolume;
+ long quality; /*quality to apply to sound*/
+ ComponentInstance filter; /*filter to apply to sound*/
+ SoundParamUPP moreRtn; /*routine to call to get more data*/
+ SoundParamUPP completionRtn; /*routine to call when buffer is complete*/
+ long refCon; /*user refcon*/
+ short result; /*result*/
+};
+
+struct ExtendedSoundParamBlock {
+ SoundParamBlock pb; /*classic SoundParamBlock except recordSize == sizeof(ExtendedSoundParamBlock)*/
+ short reserved;
+ long extendedFlags; /*flags*/
+ long bufferSize; /*size of buffer in bytes*/
+ long frameCount; /*number of audio frames*/
+ long * frameSizesArray; /*pointer to array of longs with frame sizes in bytes*/
+ long commonFrameSize; /*size of each frame if common*/
+ void * extensionsPtr; /*pointer to set of classic atoms (size,type,data,...)*/
+ long extensionsSize; /*size of extensions data (extensionsPtr)*/
+ unsigned long bufferFlags; /*set or cleared flags*/
+ unsigned long bufferFlagsMask; /*which flags are valid*/
+};
+typedef struct ExtendedSoundParamBlock ExtendedSoundParamBlock;
+typedef ExtendedSoundParamBlock * ExtendedSoundParamBlockPtr;
+struct CompressionInfo {
+ long recordSize;
+ OSType format;
+ short compressionID;
+ unsigned short samplesPerPacket;
+ unsigned short bytesPerPacket;
+ unsigned short bytesPerFrame;
+ unsigned short bytesPerSample;
+ unsigned short futureUse1;
+};
+typedef struct CompressionInfo CompressionInfo;
+typedef CompressionInfo * CompressionInfoPtr;
+typedef CompressionInfoPtr * CompressionInfoHandle;
+/*variables for floating point conversion*/
+struct SoundSlopeAndInterceptRecord {
+ Float64 slope;
+ Float64 intercept;
+ Float64 minClip;
+ Float64 maxClip;
+};
+typedef struct SoundSlopeAndInterceptRecord SoundSlopeAndInterceptRecord;
+typedef SoundSlopeAndInterceptRecord * SoundSlopeAndInterceptPtr;
+/*private thing to use as a reference to a Sound Converter*/
+typedef struct OpaqueSoundConverter* SoundConverter;
+/*callback routine to provide data to the Sound Converter*/
+typedef CALLBACK_API( Boolean , SoundConverterFillBufferDataProcPtr )(SoundComponentDataPtr *data, void *refCon);
+typedef STACK_UPP_TYPE(SoundConverterFillBufferDataProcPtr) SoundConverterFillBufferDataUPP;
+/*private thing to use as a reference to a Sound Source*/
+typedef struct OpaqueSoundSource* SoundSource;
+typedef SoundSource * SoundSourcePtr;
+
+
+struct SoundComponentLink {
+ ComponentDescription description; /*Describes the sound component*/
+ SoundSource mixerID; /*Reserved by Apple*/
+ SoundSource * linkID; /*Reserved by Apple*/
+};
+typedef struct SoundComponentLink SoundComponentLink;
+typedef SoundComponentLink * SoundComponentLinkPtr;
+struct AudioInfo {
+ long capabilitiesFlags; /*Describes device capabilities*/
+ long reserved; /*Reserved by Apple*/
+ unsigned short numVolumeSteps; /*Number of significant increments between min and max volume*/
+};
+typedef struct AudioInfo AudioInfo;
+typedef AudioInfo * AudioInfoPtr;
+struct AudioFormatAtom {
+ long size; /* = sizeof(AudioFormatAtom)*/
+ OSType atomType; /* = kAudioFormatAtomType*/
+ OSType format;
+};
+typedef struct AudioFormatAtom AudioFormatAtom;
+typedef AudioFormatAtom * AudioFormatAtomPtr;
+struct AudioEndianAtom {
+ long size; /* = sizeof(AudioEndianAtom)*/
+ OSType atomType; /* = kAudioEndianAtomType*/
+ short littleEndian;
+};
+typedef struct AudioEndianAtom AudioEndianAtom;
+typedef AudioEndianAtom * AudioEndianAtomPtr;
+struct AudioTerminatorAtom {
+ long size; /* = sizeof(AudioTerminatorAtom)*/
+ OSType atomType; /* = kAudioTerminatorAtomType*/
+};
+typedef struct AudioTerminatorAtom AudioTerminatorAtom;
+typedef AudioTerminatorAtom * AudioTerminatorAtomPtr;
+struct LevelMeterInfo {
+ short numChannels; /* mono or stereo source*/
+ UInt8 leftMeter; /* 0-255 range*/
+ UInt8 rightMeter; /* 0-255 range*/
+};
+typedef struct LevelMeterInfo LevelMeterInfo;
+typedef LevelMeterInfo * LevelMeterInfoPtr;
+struct EQSpectrumBandsRecord {
+ short count;
+ UnsignedFixedPtr frequency; /* pointer to array of frequencies*/
+};
+typedef struct EQSpectrumBandsRecord EQSpectrumBandsRecord;
+typedef EQSpectrumBandsRecord * EQSpectrumBandsRecordPtr;
+enum {
+ kSoundAudioCodecPropertyWritableFlag = 1L << 0
+};
+
+struct SoundAudioCodecPropertyRequestParams {
+ UInt32 propertyClass;
+ UInt32 propertyID;
+ UInt32 propertyDataSize; /* out -- GetPropertyInfo, in/out -- GetProperty, in -- SetProperty*/
+ void * propertyData; /* in -- GetPropertyInfo, GetProperty, SetProperty*/
+ UInt32 propertyRequestFlags; /* out -- GetPropertyInfo*/
+ UInt32 propertyDataType; /* out -- GetPropertyInfo, often 0*/
+ ComponentResult propertyRequestResult; /* out -- GetPropertyInfo, GetProperty, SetProperty*/
+};
+typedef struct SoundAudioCodecPropertyRequestParams SoundAudioCodecPropertyRequestParams;
+
+
+/* Sound Input Structures*/
+typedef struct SPB SPB;
+
+typedef SPB * SPBPtr;
+
+
+/*user procedures called by sound input routines*/
+typedef CALLBACK_API_REGISTER68K( void , SIInterruptProcPtr, (SPBPtr inParamPtr, Ptr dataBuffer, short peakAmplitude, long sampleSize) );
+typedef CALLBACK_API( void , SICompletionProcPtr )(SPBPtr inParamPtr);
+typedef REGISTER_UPP_TYPE(SIInterruptProcPtr) SIInterruptUPP;
+typedef STACK_UPP_TYPE(SICompletionProcPtr) SICompletionUPP;
+
+
+/*Sound Input Parameter Block*/
+struct SPB {
+ long inRefNum; /*reference number of sound input device*/
+ unsigned long count; /*number of bytes to record*/
+ unsigned long milliseconds; /*number of milliseconds to record*/
+ unsigned long bufferLength; /*length of buffer in bytes*/
+ Ptr bufferPtr; /*buffer to store sound data in*/
+ SICompletionUPP completionRoutine; /*completion routine*/
+ SIInterruptUPP interruptRoutine; /*interrupt routine*/
+ long userLong; /*user-defined field*/
+ OSErr error; /*error*/
+ long unused1; /*reserved - must be zero*/
+};
+
+/*
+ * NewSoundParamUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( SoundParamUPP )
+NewSoundParamUPP(SoundParamProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppSoundParamProcInfo = 0x000000D0 }; /* pascal 1_byte Func(4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(SoundParamUPP) NewSoundParamUPP(SoundParamProcPtr userRoutine) { return (SoundParamUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSoundParamProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewSoundParamUPP(userRoutine) (SoundParamUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSoundParamProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewSoundConverterFillBufferDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( SoundConverterFillBufferDataUPP )
+NewSoundConverterFillBufferDataUPP(SoundConverterFillBufferDataProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppSoundConverterFillBufferDataProcInfo = 0x000003D0 }; /* pascal 1_byte Func(4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(SoundConverterFillBufferDataUPP) NewSoundConverterFillBufferDataUPP(SoundConverterFillBufferDataProcPtr userRoutine) { return (SoundConverterFillBufferDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSoundConverterFillBufferDataProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewSoundConverterFillBufferDataUPP(userRoutine) (SoundConverterFillBufferDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSoundConverterFillBufferDataProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewSIInterruptUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( SIInterruptUPP )
+NewSIInterruptUPP(SIInterruptProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppSIInterruptProcInfo = 0x1C579802 }; /* register no_return_value Func(4_bytes:A0, 4_bytes:A1, 2_bytes:D0, 4_bytes:D1) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(SIInterruptUPP) NewSIInterruptUPP(SIInterruptProcPtr userRoutine) { return (SIInterruptUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSIInterruptProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewSIInterruptUPP(userRoutine) (SIInterruptUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSIInterruptProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewSICompletionUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( SICompletionUPP )
+NewSICompletionUPP(SICompletionProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppSICompletionProcInfo = 0x000000C0 }; /* pascal no_return_value Func(4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(SICompletionUPP) NewSICompletionUPP(SICompletionProcPtr userRoutine) { return (SICompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSICompletionProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewSICompletionUPP(userRoutine) (SICompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSICompletionProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeSoundParamUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeSoundParamUPP(SoundParamUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeSoundParamUPP(SoundParamUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeSoundParamUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeSoundConverterFillBufferDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeSoundConverterFillBufferDataUPP(SoundConverterFillBufferDataUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeSoundConverterFillBufferDataUPP(SoundConverterFillBufferDataUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeSoundConverterFillBufferDataUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeSIInterruptUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeSIInterruptUPP(SIInterruptUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeSIInterruptUPP(SIInterruptUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeSIInterruptUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeSICompletionUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeSICompletionUPP(SICompletionUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeSICompletionUPP(SICompletionUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeSICompletionUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeSoundParamUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( Boolean )
+InvokeSoundParamUPP(
+ SoundParamBlockPtr * pb,
+ SoundParamUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(Boolean) InvokeSoundParamUPP(SoundParamBlockPtr * pb, SoundParamUPP userUPP) { return (Boolean)CALL_ONE_PARAMETER_UPP(userUPP, uppSoundParamProcInfo, pb); }
+ #else
+ #define InvokeSoundParamUPP(pb, userUPP) (Boolean)CALL_ONE_PARAMETER_UPP((userUPP), uppSoundParamProcInfo, (pb))
+ #endif
+#endif
+
+/*
+ * InvokeSoundConverterFillBufferDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( Boolean )
+InvokeSoundConverterFillBufferDataUPP(
+ SoundComponentDataPtr * data,
+ void * refCon,
+ SoundConverterFillBufferDataUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(Boolean) InvokeSoundConverterFillBufferDataUPP(SoundComponentDataPtr * data, void * refCon, SoundConverterFillBufferDataUPP userUPP) { return (Boolean)CALL_TWO_PARAMETER_UPP(userUPP, uppSoundConverterFillBufferDataProcInfo, data, refCon); }
+ #else
+ #define InvokeSoundConverterFillBufferDataUPP(data, refCon, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppSoundConverterFillBufferDataProcInfo, (data), (refCon))
+ #endif
+#endif
+
+/*
+ * InvokeSIInterruptUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+InvokeSIInterruptUPP(
+ SPBPtr inParamPtr,
+ Ptr dataBuffer,
+ short peakAmplitude,
+ long sampleSize,
+ SIInterruptUPP userUPP);
+#if !OPAQUE_UPP_TYPES && (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) InvokeSIInterruptUPP(SPBPtr inParamPtr, Ptr dataBuffer, short peakAmplitude, long sampleSize, SIInterruptUPP userUPP) { CALL_FOUR_PARAMETER_UPP(userUPP, uppSIInterruptProcInfo, inParamPtr, dataBuffer, peakAmplitude, sampleSize); }
+ #else
+ #define InvokeSIInterruptUPP(inParamPtr, dataBuffer, peakAmplitude, sampleSize, userUPP) CALL_FOUR_PARAMETER_UPP((userUPP), uppSIInterruptProcInfo, (inParamPtr), (dataBuffer), (peakAmplitude), (sampleSize))
+ #endif
+#endif
+
+/*
+ * InvokeSICompletionUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+InvokeSICompletionUPP(
+ SPBPtr inParamPtr,
+ SICompletionUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) InvokeSICompletionUPP(SPBPtr inParamPtr, SICompletionUPP userUPP) { CALL_ONE_PARAMETER_UPP(userUPP, uppSICompletionProcInfo, inParamPtr); }
+ #else
+ #define InvokeSICompletionUPP(inParamPtr, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppSICompletionProcInfo, (inParamPtr))
+ #endif
+#endif
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewSoundParamProc(userRoutine) NewSoundParamUPP(userRoutine)
+ #define NewSoundConverterFillBufferDataProc(userRoutine) NewSoundConverterFillBufferDataUPP(userRoutine)
+ #define NewSIInterruptProc(userRoutine) NewSIInterruptUPP(userRoutine)
+ #define NewSICompletionProc(userRoutine) NewSICompletionUPP(userRoutine)
+ #define CallSoundParamProc(userRoutine, pb) InvokeSoundParamUPP(pb, userRoutine)
+ #define CallSoundConverterFillBufferDataProc(userRoutine, data, refCon) InvokeSoundConverterFillBufferDataUPP(data, refCon, userRoutine)
+ #define CallSIInterruptProc(userRoutine, inParamPtr, dataBuffer, peakAmplitude, sampleSize) InvokeSIInterruptUPP(inParamPtr, dataBuffer, peakAmplitude, sampleSize, userRoutine)
+ #define CallSICompletionProc(userRoutine, inParamPtr) InvokeSICompletionUPP(inParamPtr, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+typedef CALLBACK_API( void , FilePlayCompletionProcPtr )(SndChannelPtr chan);
+typedef STACK_UPP_TYPE(FilePlayCompletionProcPtr) FilePlayCompletionUPP;
+#if CALL_NOT_IN_CARBON
+/*
+ * NewFilePlayCompletionUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( FilePlayCompletionUPP )
+NewFilePlayCompletionUPP(FilePlayCompletionProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppFilePlayCompletionProcInfo = 0x000000C0 }; /* pascal no_return_value Func(4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(FilePlayCompletionUPP) NewFilePlayCompletionUPP(FilePlayCompletionProcPtr userRoutine) { return (FilePlayCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFilePlayCompletionProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewFilePlayCompletionUPP(userRoutine) (FilePlayCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFilePlayCompletionProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeFilePlayCompletionUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( void )
+DisposeFilePlayCompletionUPP(FilePlayCompletionUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeFilePlayCompletionUPP(FilePlayCompletionUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeFilePlayCompletionUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeFilePlayCompletionUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API_C( void )
+InvokeFilePlayCompletionUPP(
+ SndChannelPtr chan,
+ FilePlayCompletionUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) InvokeFilePlayCompletionUPP(SndChannelPtr chan, FilePlayCompletionUPP userUPP) { CALL_ONE_PARAMETER_UPP(userUPP, uppFilePlayCompletionProcInfo, chan); }
+ #else
+ #define InvokeFilePlayCompletionUPP(chan, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppFilePlayCompletionProcInfo, (chan))
+ #endif
+#endif
+
+#endif /* CALL_NOT_IN_CARBON */
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewFilePlayCompletionProc(userRoutine) NewFilePlayCompletionUPP(userRoutine)
+ #define CallFilePlayCompletionProc(userRoutine, chan) InvokeFilePlayCompletionUPP(chan, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+/*
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ prototypes
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*/
+
+
+/* Sound Manager routines */
+/*
+ * SysBeep()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+SysBeep(short duration) ONEWORDINLINE(0xA9C8);
+
+
+/*
+ * SndDoCommand()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndDoCommand(
+ SndChannelPtr chan,
+ const SndCommand * cmd,
+ Boolean noWait) ONEWORDINLINE(0xA803);
+
+
+/*
+ * SndDoImmediate()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndDoImmediate(
+ SndChannelPtr chan,
+ const SndCommand * cmd) ONEWORDINLINE(0xA804);
+
+
+/*
+ * SndNewChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndNewChannel(
+ SndChannelPtr * chan,
+ short synth,
+ long init,
+ SndCallBackUPP userRoutine) ONEWORDINLINE(0xA807);
+
+
+/*
+ * SndDisposeChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndDisposeChannel(
+ SndChannelPtr chan,
+ Boolean quietNow) ONEWORDINLINE(0xA801);
+
+
+/*
+ * SndPlay()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndPlay(
+ SndChannelPtr chan,
+ SndListHandle sndHandle,
+ Boolean async) ONEWORDINLINE(0xA805);
+
+
+#if OLDROUTINENAMES
+#if CALL_NOT_IN_CARBON
+/*
+ * SndAddModifier()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSErr )
+SndAddModifier(
+ SndChannelPtr chan,
+ Ptr modifier,
+ short id,
+ long init) ONEWORDINLINE(0xA802);
+
+
+#endif /* CALL_NOT_IN_CARBON */
+
+#endif /* OLDROUTINENAMES */
+
+#if CALL_NOT_IN_CARBON
+/*
+ * SndControl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSErr )
+SndControl(
+ short id,
+ SndCommand * cmd) ONEWORDINLINE(0xA806);
+
+
+/* Sound Manager 2.0 and later, uses _SoundDispatch */
+#endif /* CALL_NOT_IN_CARBON */
+
+/*
+ * SndSoundManagerVersion()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( NumVersion )
+SndSoundManagerVersion(void) FOURWORDINLINE(0x203C, 0x000C, 0x0008, 0xA800);
+
+
+#if CALL_NOT_IN_CARBON
+/*
+ * SndStartFilePlay()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSErr )
+SndStartFilePlay(
+ SndChannelPtr chan,
+ short fRefNum,
+ short resNum,
+ long bufferSize,
+ void * theBuffer,
+ AudioSelectionPtr theSelection,
+ FilePlayCompletionUPP theCompletion,
+ Boolean async) FOURWORDINLINE(0x203C, 0x0D00, 0x0008, 0xA800);
+
+
+/*
+ * SndPauseFilePlay()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSErr )
+SndPauseFilePlay(SndChannelPtr chan) FOURWORDINLINE(0x203C, 0x0204, 0x0008, 0xA800);
+
+
+/*
+ * SndStopFilePlay()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSErr )
+SndStopFilePlay(
+ SndChannelPtr chan,
+ Boolean quietNow) FOURWORDINLINE(0x203C, 0x0308, 0x0008, 0xA800);
+
+
+#endif /* CALL_NOT_IN_CARBON */
+
+/*
+ * SndChannelStatus()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndChannelStatus(
+ SndChannelPtr chan,
+ short theLength,
+ SCStatusPtr theStatus) FOURWORDINLINE(0x203C, 0x0510, 0x0008, 0xA800);
+
+
+/*
+ * SndManagerStatus()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndManagerStatus(
+ short theLength,
+ SMStatusPtr theStatus) FOURWORDINLINE(0x203C, 0x0314, 0x0008, 0xA800);
+
+
+/*
+ * SndGetSysBeepState()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+SndGetSysBeepState(short * sysBeepState) FOURWORDINLINE(0x203C, 0x0218, 0x0008, 0xA800);
+
+
+/*
+ * SndSetSysBeepState()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndSetSysBeepState(short sysBeepState) FOURWORDINLINE(0x203C, 0x011C, 0x0008, 0xA800);
+
+
+#if CALL_NOT_IN_CARBON
+/*
+ * SndPlayDoubleBuffer()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSErr )
+SndPlayDoubleBuffer(
+ SndChannelPtr chan,
+ SndDoubleBufferHeaderPtr theParams) FOURWORDINLINE(0x203C, 0x0420, 0x0008, 0xA800);
+
+
+/* MACE compression routines, uses _SoundDispatch */
+/*
+ * MACEVersion()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( NumVersion )
+MACEVersion(void) FOURWORDINLINE(0x203C, 0x0000, 0x0010, 0xA800);
+
+
+/*
+ * Comp3to1()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( void )
+Comp3to1(
+ const void * inBuffer,
+ void * outBuffer,
+ unsigned long cnt,
+ StateBlockPtr inState,
+ StateBlockPtr outState,
+ unsigned long numChannels,
+ unsigned long whichChannel) FOURWORDINLINE(0x203C, 0x0004, 0x0010, 0xA800);
+
+
+/*
+ * Exp1to3()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( void )
+Exp1to3(
+ const void * inBuffer,
+ void * outBuffer,
+ unsigned long cnt,
+ StateBlockPtr inState,
+ StateBlockPtr outState,
+ unsigned long numChannels,
+ unsigned long whichChannel) FOURWORDINLINE(0x203C, 0x0008, 0x0010, 0xA800);
+
+
+/*
+ * Comp6to1()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( void )
+Comp6to1(
+ const void * inBuffer,
+ void * outBuffer,
+ unsigned long cnt,
+ StateBlockPtr inState,
+ StateBlockPtr outState,
+ unsigned long numChannels,
+ unsigned long whichChannel) FOURWORDINLINE(0x203C, 0x000C, 0x0010, 0xA800);
+
+
+/*
+ * Exp1to6()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( void )
+Exp1to6(
+ const void * inBuffer,
+ void * outBuffer,
+ unsigned long cnt,
+ StateBlockPtr inState,
+ StateBlockPtr outState,
+ unsigned long numChannels,
+ unsigned long whichChannel) FOURWORDINLINE(0x203C, 0x0010, 0x0010, 0xA800);
+
+
+/* Sound Manager 3.0 and later calls, uses _SoundDispatch */
+#endif /* CALL_NOT_IN_CARBON */
+
+/*
+ * GetSysBeepVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetSysBeepVolume(long * level) FOURWORDINLINE(0x203C, 0x0224, 0x0018, 0xA800);
+
+
+/*
+ * SetSysBeepVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SetSysBeepVolume(long level) FOURWORDINLINE(0x203C, 0x0228, 0x0018, 0xA800);
+
+
+/*
+ * GetDefaultOutputVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetDefaultOutputVolume(long * level) FOURWORDINLINE(0x203C, 0x022C, 0x0018, 0xA800);
+
+
+/*
+ * SetDefaultOutputVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SetDefaultOutputVolume(long level) FOURWORDINLINE(0x203C, 0x0230, 0x0018, 0xA800);
+
+
+/*
+ * GetSoundHeaderOffset()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetSoundHeaderOffset(
+ SndListHandle sndHandle,
+ long * offset) FOURWORDINLINE(0x203C, 0x0404, 0x0018, 0xA800);
+
+
+/*
+ * UnsignedFixedMulDiv()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( UnsignedFixed )
+UnsignedFixedMulDiv(
+ UnsignedFixed value,
+ UnsignedFixed multiplier,
+ UnsignedFixed divisor) FOURWORDINLINE(0x203C, 0x060C, 0x0018, 0xA800);
+
+
+/*
+ * GetCompressionInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetCompressionInfo(
+ short compressionID,
+ OSType format,
+ short numChannels,
+ short sampleSize,
+ CompressionInfoPtr cp) FOURWORDINLINE(0x203C, 0x0710, 0x0018, 0xA800);
+
+
+/*
+ * SetSoundPreference()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SetSoundPreference(
+ OSType theType,
+ Str255 name,
+ Handle settings) FOURWORDINLINE(0x203C, 0x0634, 0x0018, 0xA800);
+
+
+/*
+ * GetSoundPreference()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetSoundPreference(
+ OSType theType,
+ Str255 name,
+ Handle settings) FOURWORDINLINE(0x203C, 0x0638, 0x0018, 0xA800);
+
+
+/*
+ * OpenMixerSoundComponent()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+OpenMixerSoundComponent(
+ SoundComponentDataPtr outputDescription,
+ long outputFlags,
+ ComponentInstance * mixerComponent) FOURWORDINLINE(0x203C, 0x0614, 0x0018, 0xA800);
+
+
+/*
+ * CloseMixerSoundComponent()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+CloseMixerSoundComponent(ComponentInstance ci) FOURWORDINLINE(0x203C, 0x0218, 0x0018, 0xA800);
+
+
+/* Sound Manager 3.1 and later calls, uses _SoundDispatch */
+/*
+ * SndGetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndGetInfo(
+ SndChannelPtr chan,
+ OSType selector,
+ void * infoPtr) FOURWORDINLINE(0x203C, 0x063C, 0x0018, 0xA800);
+
+
+/*
+ * SndSetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndSetInfo(
+ SndChannelPtr chan,
+ OSType selector,
+ const void * infoPtr) FOURWORDINLINE(0x203C, 0x0640, 0x0018, 0xA800);
+
+
+/*
+ * GetSoundOutputInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetSoundOutputInfo(
+ Component outputDevice,
+ OSType selector,
+ void * infoPtr) FOURWORDINLINE(0x203C, 0x0644, 0x0018, 0xA800);
+
+
+/*
+ * SetSoundOutputInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SetSoundOutputInfo(
+ Component outputDevice,
+ OSType selector,
+ const void * infoPtr) FOURWORDINLINE(0x203C, 0x0648, 0x0018, 0xA800);
+
+
+/* Sound Manager 3.2 and later calls, uses _SoundDispatch */
+/*
+ * GetCompressionName()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.2 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetCompressionName(
+ OSType compressionType,
+ Str255 compressionName) FOURWORDINLINE(0x203C, 0x044C, 0x0018, 0xA800);
+
+
+/*
+ * SoundConverterOpen()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.2 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterOpen(
+ const SoundComponentData * inputFormat,
+ const SoundComponentData * outputFormat,
+ SoundConverter * sc) FOURWORDINLINE(0x203C, 0x0650, 0x0018, 0xA800);
+
+
+/*
+ * SoundConverterClose()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.2 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterClose(SoundConverter sc) FOURWORDINLINE(0x203C, 0x0254, 0x0018, 0xA800);
+
+
+/*
+ * SoundConverterGetBufferSizes()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.2 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterGetBufferSizes(
+ SoundConverter sc,
+ unsigned long inputBytesTarget,
+ unsigned long * inputFrames,
+ unsigned long * inputBytes,
+ unsigned long * outputBytes) FOURWORDINLINE(0x203C, 0x0A58, 0x0018, 0xA800);
+
+
+/*
+ * SoundConverterBeginConversion()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.2 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterBeginConversion(SoundConverter sc) FOURWORDINLINE(0x203C, 0x025C, 0x0018, 0xA800);
+
+
+/*
+ * SoundConverterConvertBuffer()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.2 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterConvertBuffer(
+ SoundConverter sc,
+ const void * inputPtr,
+ unsigned long inputFrames,
+ void * outputPtr,
+ unsigned long * outputFrames,
+ unsigned long * outputBytes) FOURWORDINLINE(0x203C, 0x0C60, 0x0018, 0xA800);
+
+
+/*
+ * SoundConverterEndConversion()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.2 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterEndConversion(
+ SoundConverter sc,
+ void * outputPtr,
+ unsigned long * outputFrames,
+ unsigned long * outputBytes) FOURWORDINLINE(0x203C, 0x0864, 0x0018, 0xA800);
+
+
+/* Sound Manager 3.3 and later calls, uses _SoundDispatch */
+/*
+ * SoundConverterGetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.3 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterGetInfo(
+ SoundConverter sc,
+ OSType selector,
+ void * infoPtr) FOURWORDINLINE(0x203C, 0x0668, 0x0018, 0xA800);
+
+
+/*
+ * SoundConverterSetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.3 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterSetInfo(
+ SoundConverter sc,
+ OSType selector,
+ void * infoPtr) FOURWORDINLINE(0x203C, 0x066C, 0x0018, 0xA800);
+
+
+/* Sound Manager 3.6 and later calls, uses _SoundDispatch */
+/*
+ * SoundConverterFillBuffer()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.6 and later
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundConverterFillBuffer(
+ SoundConverter sc,
+ SoundConverterFillBufferDataUPP fillBufferDataUPP,
+ void * fillBufferDataRefCon,
+ void * outputBuffer,
+ unsigned long outputBufferByteSize,
+ unsigned long * bytesWritten,
+ unsigned long * framesWritten,
+ unsigned long * outputFlags) FOURWORDINLINE(0x203C, 0x1078, 0x0018, 0xA800);
+
+
+/*
+ * SoundManagerGetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.6 and later
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundManagerGetInfo(
+ OSType selector,
+ void * infoPtr) FOURWORDINLINE(0x203C, 0x047C, 0x0018, 0xA800);
+
+
+/*
+ * SoundManagerSetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.6 and later
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SoundManagerSetInfo(
+ OSType selector,
+ const void * infoPtr) FOURWORDINLINE(0x203C, 0x0480, 0x0018, 0xA800);
+
+
+/*
+ Sound Component Functions
+ basic sound component functions
+*/
+
+/*
+ * SoundComponentInitOutputDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentInitOutputDevice(
+ ComponentInstance ti,
+ long actions) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentSetSource()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentSetSource(
+ ComponentInstance ti,
+ SoundSource sourceID,
+ ComponentInstance source) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0002, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentGetSource()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentGetSource(
+ ComponentInstance ti,
+ SoundSource sourceID,
+ ComponentInstance * source) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0003, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentGetSourceData()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentGetSourceData(
+ ComponentInstance ti,
+ SoundComponentDataPtr * sourceData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0004, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentSetOutput()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentSetOutput(
+ ComponentInstance ti,
+ SoundComponentDataPtr requested,
+ SoundComponentDataPtr * actual) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0005, 0x7000, 0xA82A);
+
+
+/* junction methods for the mixer, must be called at non-interrupt level*/
+/*
+ * SoundComponentAddSource()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentAddSource(
+ ComponentInstance ti,
+ SoundSource * sourceID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0101, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentRemoveSource()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentRemoveSource(
+ ComponentInstance ti,
+ SoundSource sourceID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0102, 0x7000, 0xA82A);
+
+
+/* info methods*/
+/*
+ * SoundComponentGetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentGetInfo(
+ ComponentInstance ti,
+ SoundSource sourceID,
+ OSType selector,
+ void * infoPtr) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0103, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentSetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentSetInfo(
+ ComponentInstance ti,
+ SoundSource sourceID,
+ OSType selector,
+ void * infoPtr) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0104, 0x7000, 0xA82A);
+
+
+/* control methods*/
+/*
+ * SoundComponentStartSource()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentStartSource(
+ ComponentInstance ti,
+ short count,
+ SoundSource * sources) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0105, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentStopSource()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentStopSource(
+ ComponentInstance ti,
+ short count,
+ SoundSource * sources) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0106, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentPauseSource()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentPauseSource(
+ ComponentInstance ti,
+ short count,
+ SoundSource * sources) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0107, 0x7000, 0xA82A);
+
+
+/*
+ * SoundComponentPlaySourceBuffer()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SoundComponentPlaySourceBuffer(
+ ComponentInstance ti,
+ SoundSource sourceID,
+ SoundParamBlockPtr pb,
+ long actions) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0108, 0x7000, 0xA82A);
+
+
+
+/* selectors for component calls */
+enum {
+ kSoundComponentInitOutputDeviceSelect = 0x0001,
+ kSoundComponentSetSourceSelect = 0x0002,
+ kSoundComponentGetSourceSelect = 0x0003,
+ kSoundComponentGetSourceDataSelect = 0x0004,
+ kSoundComponentSetOutputSelect = 0x0005,
+ kSoundComponentAddSourceSelect = 0x0101,
+ kSoundComponentRemoveSourceSelect = 0x0102,
+ kSoundComponentGetInfoSelect = 0x0103,
+ kSoundComponentSetInfoSelect = 0x0104,
+ kSoundComponentStartSourceSelect = 0x0105,
+ kSoundComponentStopSourceSelect = 0x0106,
+ kSoundComponentPauseSourceSelect = 0x0107,
+ kSoundComponentPlaySourceBufferSelect = 0x0108
+};
+/*Audio Components*/
+/*Volume is described as a value between 0 and 1, with 0 indicating minimum
+ volume and 1 indicating maximum volume; if the device doesn't support
+ software control of volume, then a value of unimpErr is returned, indicating
+ that these functions are not supported by the device
+*/
+#if CALL_NOT_IN_CARBON
+/*
+ * AudioGetVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioGetVolume(
+ ComponentInstance ac,
+ short whichChannel,
+ ShortFixed * volume) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0000, 0x7000, 0xA82A);
+
+
+/*
+ * AudioSetVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioSetVolume(
+ ComponentInstance ac,
+ short whichChannel,
+ ShortFixed volume) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
+
+
+/*If the device doesn't support software control of mute, then a value of unimpErr is
+returned, indicating that these functions are not supported by the device.*/
+/*
+ * AudioGetMute()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioGetMute(
+ ComponentInstance ac,
+ short whichChannel,
+ short * mute) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0002, 0x7000, 0xA82A);
+
+
+/*
+ * AudioSetMute()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioSetMute(
+ ComponentInstance ac,
+ short whichChannel,
+ short mute) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A);
+
+
+/*AudioSetToDefaults causes the associated device to reset its volume and mute values
+(and perhaps other characteristics, e.g. attenuation) to "factory default" settings*/
+/*
+ * AudioSetToDefaults()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioSetToDefaults(ComponentInstance ac) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0004, 0x7000, 0xA82A);
+
+
+/*This routine is required; it must be implemented by all audio components*/
+
+/*
+ * AudioGetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioGetInfo(
+ ComponentInstance ac,
+ AudioInfoPtr info) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A);
+
+
+/*
+ * AudioGetBass()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioGetBass(
+ ComponentInstance ac,
+ short whichChannel,
+ short * bass) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0006, 0x7000, 0xA82A);
+
+
+/*
+ * AudioSetBass()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioSetBass(
+ ComponentInstance ac,
+ short whichChannel,
+ short bass) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0007, 0x7000, 0xA82A);
+
+
+/*
+ * AudioGetTreble()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioGetTreble(
+ ComponentInstance ac,
+ short whichChannel,
+ short * Treble) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0008, 0x7000, 0xA82A);
+
+
+/*
+ * AudioSetTreble()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioSetTreble(
+ ComponentInstance ac,
+ short whichChannel,
+ short Treble) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0009, 0x7000, 0xA82A);
+
+
+/*
+ * AudioGetOutputDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioGetOutputDevice(
+ ComponentInstance ac,
+ Component * outputDevice) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000A, 0x7000, 0xA82A);
+
+
+/*This is routine is private to the AudioVision component. It enables the watching of the mute key.*/
+/*
+ * AudioMuteOnEvent()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+AudioMuteOnEvent(
+ ComponentInstance ac,
+ short muteOnEvent) FIVEWORDINLINE(0x2F3C, 0x0002, 0x0081, 0x7000, 0xA82A);
+
+
+
+/* selectors for component calls */
+enum {
+ kAudioGetVolumeSelect = 0x0000,
+ kAudioSetVolumeSelect = 0x0001,
+ kAudioGetMuteSelect = 0x0002,
+ kAudioSetMuteSelect = 0x0003,
+ kAudioSetToDefaultsSelect = 0x0004,
+ kAudioGetInfoSelect = 0x0005,
+ kAudioGetBassSelect = 0x0006,
+ kAudioSetBassSelect = 0x0007,
+ kAudioGetTrebleSelect = 0x0008,
+ kAudioSetTrebleSelect = 0x0009,
+ kAudioGetOutputDeviceSelect = 0x000A,
+ kAudioMuteOnEventSelect = 0x0081
+};
+#endif /* CALL_NOT_IN_CARBON */
+
+
+enum {
+ kDelegatedSoundComponentSelectors = 0x0100
+};
+
+
+
+/* Sound Input Manager routines, uses _SoundDispatch */
+/*
+ * SPBVersion()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( NumVersion )
+SPBVersion(void) FOURWORDINLINE(0x203C, 0x0000, 0x0014, 0xA800);
+
+
+/*
+ * SndRecord()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SndRecord(
+ ModalFilterUPP filterProc,
+ Point corner,
+ OSType quality,
+ SndListHandle * sndHandle) FOURWORDINLINE(0x203C, 0x0804, 0x0014, 0xA800);
+
+
+#if CALL_NOT_IN_CARBON
+/*
+ * SndRecordToFile()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSErr )
+SndRecordToFile(
+ ModalFilterUPP filterProc,
+ Point corner,
+ OSType quality,
+ short fRefNum) FOURWORDINLINE(0x203C, 0x0708, 0x0014, 0xA800);
+
+
+#endif /* CALL_NOT_IN_CARBON */
+
+/*
+ * SPBSignInDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBSignInDevice(
+ short deviceRefNum,
+ ConstStr255Param deviceName) FOURWORDINLINE(0x203C, 0x030C, 0x0014, 0xA800);
+
+
+/*
+ * SPBSignOutDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBSignOutDevice(short deviceRefNum) FOURWORDINLINE(0x203C, 0x0110, 0x0014, 0xA800);
+
+
+/*
+ * SPBGetIndexedDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBGetIndexedDevice(
+ short count,
+ Str255 deviceName,
+ Handle * deviceIconHandle) FOURWORDINLINE(0x203C, 0x0514, 0x0014, 0xA800);
+
+
+/*
+ * SPBOpenDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBOpenDevice(
+ ConstStr255Param deviceName,
+ short permission,
+ long * inRefNum) FOURWORDINLINE(0x203C, 0x0518, 0x0014, 0xA800);
+
+
+/*
+ * SPBCloseDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBCloseDevice(long inRefNum) FOURWORDINLINE(0x203C, 0x021C, 0x0014, 0xA800);
+
+
+/*
+ * SPBRecord()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBRecord(
+ SPBPtr inParamPtr,
+ Boolean asynchFlag) FOURWORDINLINE(0x203C, 0x0320, 0x0014, 0xA800);
+
+
+#if CALL_NOT_IN_CARBON
+/*
+ * SPBRecordToFile()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSErr )
+SPBRecordToFile(
+ short fRefNum,
+ SPBPtr inParamPtr,
+ Boolean asynchFlag) FOURWORDINLINE(0x203C, 0x0424, 0x0014, 0xA800);
+
+
+#endif /* CALL_NOT_IN_CARBON */
+
+/*
+ * SPBPauseRecording()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBPauseRecording(long inRefNum) FOURWORDINLINE(0x203C, 0x0228, 0x0014, 0xA800);
+
+
+/*
+ * SPBResumeRecording()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBResumeRecording(long inRefNum) FOURWORDINLINE(0x203C, 0x022C, 0x0014, 0xA800);
+
+
+/*
+ * SPBStopRecording()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBStopRecording(long inRefNum) FOURWORDINLINE(0x203C, 0x0230, 0x0014, 0xA800);
+
+
+/*
+ * SPBGetRecordingStatus()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBGetRecordingStatus(
+ long inRefNum,
+ short * recordingStatus,
+ short * meterLevel,
+ unsigned long * totalSamplesToRecord,
+ unsigned long * numberOfSamplesRecorded,
+ unsigned long * totalMsecsToRecord,
+ unsigned long * numberOfMsecsRecorded) FOURWORDINLINE(0x203C, 0x0E34, 0x0014, 0xA800);
+
+
+/*
+ * SPBGetDeviceInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBGetDeviceInfo(
+ long inRefNum,
+ OSType infoType,
+ void * infoData) FOURWORDINLINE(0x203C, 0x0638, 0x0014, 0xA800);
+
+
+/*
+ * SPBSetDeviceInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBSetDeviceInfo(
+ long inRefNum,
+ OSType infoType,
+ void * infoData) FOURWORDINLINE(0x203C, 0x063C, 0x0014, 0xA800);
+
+
+/*
+ * SPBMillisecondsToBytes()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBMillisecondsToBytes(
+ long inRefNum,
+ long * milliseconds) FOURWORDINLINE(0x203C, 0x0440, 0x0014, 0xA800);
+
+
+/*
+ * SPBBytesToMilliseconds()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SPBBytesToMilliseconds(
+ long inRefNum,
+ long * byteCount) FOURWORDINLINE(0x203C, 0x0444, 0x0014, 0xA800);
+
+
+/*
+ * SetupSndHeader()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SetupSndHeader(
+ SndListHandle sndHandle,
+ short numChannels,
+ UnsignedFixed sampleRate,
+ short sampleSize,
+ OSType compressionType,
+ short baseNote,
+ unsigned long numBytes,
+ short * headerLen) FOURWORDINLINE(0x203C, 0x0D48, 0x0014, 0xA800);
+
+
+/*
+ * SetupAIFFHeader()
+ *
+ * Availability:
+ * Non-Carbon CFM: in InterfaceLib 7.1 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+SetupAIFFHeader(
+ short fRefNum,
+ short numChannels,
+ UnsignedFixed sampleRate,
+ short sampleSize,
+ OSType compressionType,
+ unsigned long numBytes,
+ unsigned long numFrames) FOURWORDINLINE(0x203C, 0x0B4C, 0x0014, 0xA800);
+
+
+/* Sound Input Manager 1.1 and later calls, uses _SoundDispatch */
+/*
+ * ParseAIFFHeader()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+ParseAIFFHeader(
+ short fRefNum,
+ SoundComponentData * sndInfo,
+ unsigned long * numFrames,
+ unsigned long * dataOffset) FOURWORDINLINE(0x203C, 0x0758, 0x0014, 0xA800);
+
+
+/*
+ * ParseSndHeader()
+ *
+ * Availability:
+ * Non-Carbon CFM: in SoundLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+ParseSndHeader(
+ SndListHandle sndHandle,
+ SoundComponentData * sndInfo,
+ unsigned long * numFrames,
+ unsigned long * dataOffset) FOURWORDINLINE(0x203C, 0x085C, 0x0014, 0xA800);
+
+
+
+
+
+
+#if !TARGET_OS_MAC || TARGET_API_MAC_CARBON
+/* Only to be used if you are writing a sound input component; this */
+/* is the param block for a read request from the SoundMgr to the */
+/* sound input component. Not to be confused with the SPB struct */
+/* above, which is the param block for a read request from an app */
+/* to the SoundMgr. */
+typedef struct SndInputCmpParam SndInputCmpParam;
+typedef SndInputCmpParam * SndInputCmpParamPtr;
+typedef CALLBACK_API( void , SICCompletionProcPtr )(SndInputCmpParamPtr SICParmPtr);
+struct SndInputCmpParam {
+ SICCompletionProcPtr ioCompletion; /* completion routine [pointer]*/
+ SIInterruptProcPtr ioInterrupt; /* interrupt routine [pointer]*/
+ OSErr ioResult; /* I/O result code [word]*/
+ short pad;
+ unsigned long ioReqCount;
+ unsigned long ioActCount;
+ Ptr ioBuffer;
+ Ptr ioMisc;
+};
+
+/*
+ * SndInputReadAsync()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputReadAsync(
+ ComponentInstance self,
+ SndInputCmpParamPtr SICParmPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
+
+
+/*
+ * SndInputReadSync()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputReadSync(
+ ComponentInstance self,
+ SndInputCmpParamPtr SICParmPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0002, 0x7000, 0xA82A);
+
+
+/*
+ * SndInputPauseRecording()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputPauseRecording(ComponentInstance self) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0003, 0x7000, 0xA82A);
+
+
+/*
+ * SndInputResumeRecording()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputResumeRecording(ComponentInstance self) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0004, 0x7000, 0xA82A);
+
+
+/*
+ * SndInputStopRecording()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputStopRecording(ComponentInstance self) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0005, 0x7000, 0xA82A);
+
+
+/*
+ * SndInputGetStatus()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputGetStatus(
+ ComponentInstance self,
+ short * recordingStatus,
+ unsigned long * totalSamplesToRecord,
+ unsigned long * numberOfSamplesRecorded) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0006, 0x7000, 0xA82A);
+
+
+/*
+ * SndInputGetDeviceInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputGetDeviceInfo(
+ ComponentInstance self,
+ OSType infoType,
+ void * infoData) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0007, 0x7000, 0xA82A);
+
+
+/*
+ * SndInputSetDeviceInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputSetDeviceInfo(
+ ComponentInstance self,
+ OSType infoType,
+ void * infoData) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0008, 0x7000, 0xA82A);
+
+
+/*
+ * SndInputInitHardware()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ComponentResult )
+SndInputInitHardware(ComponentInstance self) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0009, 0x7000, 0xA82A);
+
+
+
+/* selectors for component calls */
+enum {
+ kSndInputReadAsyncSelect = 0x0001,
+ kSndInputReadSyncSelect = 0x0002,
+ kSndInputPauseRecordingSelect = 0x0003,
+ kSndInputResumeRecordingSelect = 0x0004,
+ kSndInputStopRecordingSelect = 0x0005,
+ kSndInputGetStatusSelect = 0x0006,
+ kSndInputGetDeviceInfoSelect = 0x0007,
+ kSndInputSetDeviceInfoSelect = 0x0008,
+ kSndInputInitHardwareSelect = 0x0009
+};
+#endif /* !TARGET_OS_MAC || TARGET_API_MAC_CARBON */
+
+
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack()
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SOUND__ */
+