/* File: AIFF.h Contains: Definition of AIFF file format components. Version: QuickTime 7.3 Copyright: (c) 2007 (c) 1989-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 __AIFF__ #define __AIFF__ #ifndef __MACTYPES__ #include #endif #if PRAGMA_ONCE #pragma once #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 enum { AIFFID = FOUR_CHAR_CODE('AIFF'), AIFCID = FOUR_CHAR_CODE('AIFC'), FormatVersionID = FOUR_CHAR_CODE('FVER'), CommonID = FOUR_CHAR_CODE('COMM'), FORMID = FOUR_CHAR_CODE('FORM'), SoundDataID = FOUR_CHAR_CODE('SSND'), MarkerID = FOUR_CHAR_CODE('MARK'), InstrumentID = FOUR_CHAR_CODE('INST'), MIDIDataID = FOUR_CHAR_CODE('MIDI'), AudioRecordingID = FOUR_CHAR_CODE('AESD'), ApplicationSpecificID = FOUR_CHAR_CODE('APPL'), CommentID = FOUR_CHAR_CODE('COMT'), NameID = FOUR_CHAR_CODE('NAME'), AuthorID = FOUR_CHAR_CODE('AUTH'), CopyrightID = FOUR_CHAR_CODE('(c) '), AnnotationID = FOUR_CHAR_CODE('ANNO') }; enum { NoLooping = 0, ForwardLooping = 1, ForwardBackwardLooping = 2 }; enum { /* AIFF-C Versions */ AIFCVersion1 = (long)0xA2805140 }; /* Compression Names */ #define NoneName "\pnot compressed" #define ACE2to1Name "\pACE 2-to-1" #define ACE8to3Name "\pACE 8-to-3" #define MACE3to1Name "\pMACE 3-to-1" #define MACE6to1Name "\pMACE 6-to-1" enum { /* Compression Types */ NoneType = FOUR_CHAR_CODE('NONE'), ACE2Type = FOUR_CHAR_CODE('ACE2'), ACE8Type = FOUR_CHAR_CODE('ACE8'), MACE3Type = FOUR_CHAR_CODE('MAC3'), MACE6Type = FOUR_CHAR_CODE('MAC6') }; typedef unsigned long ID; typedef short MarkerIdType; struct ChunkHeader { ID ckID; long ckSize; }; typedef struct ChunkHeader ChunkHeader; struct ContainerChunk { ID ckID; long ckSize; ID formType; }; typedef struct ContainerChunk ContainerChunk; struct FormatVersionChunk { ID ckID; long ckSize; unsigned long timestamp; }; typedef struct FormatVersionChunk FormatVersionChunk; typedef FormatVersionChunk * FormatVersionChunkPtr; struct CommonChunk { ID ckID; long ckSize; short numChannels; unsigned long numSampleFrames; short sampleSize; extended80 sampleRate; }; typedef struct CommonChunk CommonChunk; typedef CommonChunk * CommonChunkPtr; struct ExtCommonChunk { ID ckID; long ckSize; short numChannels; unsigned long numSampleFrames; short sampleSize; extended80 sampleRate; ID compressionType; char compressionName[1]; /* variable length array, Pascal string */ }; typedef struct ExtCommonChunk ExtCommonChunk; typedef ExtCommonChunk * ExtCommonChunkPtr; struct SoundDataChunk { ID ckID; long ckSize; unsigned long offset; unsigned long blockSize; }; typedef struct SoundDataChunk SoundDataChunk; typedef SoundDataChunk * SoundDataChunkPtr; struct Marker { MarkerIdType id; unsigned long position; Str255 markerName; }; typedef struct Marker Marker; struct MarkerChunk { ID ckID; long ckSize; unsigned short numMarkers; Marker Markers[1]; /* variable length array */ }; typedef struct MarkerChunk MarkerChunk; typedef MarkerChunk * MarkerChunkPtr; struct AIFFLoop { short playMode; MarkerIdType beginLoop; MarkerIdType endLoop; }; typedef struct AIFFLoop AIFFLoop; struct InstrumentChunk { ID ckID; long ckSize; UInt8 baseFrequency; UInt8 detune; UInt8 lowFrequency; UInt8 highFrequency; UInt8 lowVelocity; UInt8 highVelocity; short gain; AIFFLoop sustainLoop; AIFFLoop releaseLoop; }; typedef struct InstrumentChunk InstrumentChunk; typedef InstrumentChunk * InstrumentChunkPtr; struct MIDIDataChunk { ID ckID; long ckSize; UInt8 MIDIdata[1]; /* variable length array */ }; typedef struct MIDIDataChunk MIDIDataChunk; typedef MIDIDataChunk * MIDIDataChunkPtr; struct AudioRecordingChunk { ID ckID; long ckSize; UInt8 AESChannelStatus[24]; }; typedef struct AudioRecordingChunk AudioRecordingChunk; typedef AudioRecordingChunk * AudioRecordingChunkPtr; struct ApplicationSpecificChunk { ID ckID; long ckSize; OSType applicationSignature; UInt8 data[1]; /* variable length array */ }; typedef struct ApplicationSpecificChunk ApplicationSpecificChunk; typedef ApplicationSpecificChunk * ApplicationSpecificChunkPtr; struct Comment { unsigned long timeStamp; MarkerIdType marker; unsigned short count; char text[1]; /* variable length array, Pascal string */ }; typedef struct Comment Comment; struct CommentsChunk { ID ckID; long ckSize; unsigned short numComments; Comment comments[1]; /* variable length array */ }; typedef struct CommentsChunk CommentsChunk; typedef CommentsChunk * CommentsChunkPtr; struct TextChunk { ID ckID; long ckSize; char text[1]; /* variable length array, Pascal string */ }; typedef struct TextChunk TextChunk; typedef TextChunk * TextChunkPtr; #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 #endif /* __AIFF__ */