topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-AIFF.h / h
/*
File: AIFF.h
Contains: Definition of AIFF file format components.
Version: Technology: System 8.5
Release: QuickTime 6.0.2
Copyright: (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
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
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
ifdef __cplusplus
}
endif
endif /* __AIFF__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.