|
|
/*
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 <MacTypes.h>
#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__ */
|