source-engine/common/quicktime_win32/AIFF.h

234 lines
7.2 KiB
C
Raw Permalink Normal View History

2020-04-22 16:56:21 +00:00
/*
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__ */