www.pudn.com > av3dec_20050318.zip > AIpar.h
/*------------ Telecommunications & Signal Processing Lab --------------
McGill University
Routine:
AIpar.h
Description:
Declarations for AIFF and AIFF-C audio file headers
Author / revision:
P. Kabal Copyright (C) 1999
$Revision: 1.16 $ $Date: 1999/06/03 13:13:13 $
----------------------------------------------------------------------*/
#ifndef AIpar_h_
#define AIpar_h_
#include /* typedef for uint2_t, etc */
/* AIFF or AIFF-C file layout
FORM chunk 8 + 4 + FVER/COMM/SSND chunks
FVER chunk 8 + 4 (AIFF-C files only)
COMM chunk 8 + 18 + compressionType (4 bytes)
+ compressionName (min length 2)
SSND chunk 8 + 8 + data
AIFF files do not have the compressionType and compressionName fields in the
COMM chunk. The minimum length AIFF file is 54 bytes long; the minimum
length AIFF-C file is 72 bytes long.
*/
/* File magic in file byte order */
#define FM_IFF "FORM"
# define FM_AIFF "AIFF"
# define FM_AIFF_C "AIFC"
#define CKID_COMM "COMM"
#define CKID_FVER "FVER"
#define CKID_SSND "SSND"
#define CKID_NAME "NAME"
#define CKID_AUTHOR "AUTH"
#define CKID_COPYRIGHT "(c) "
#define CKID_ANNOTATION "ANNO"
#define CT_NONE "NONE"
#define CT_ALAW "alaw"
#define CT_ULAW "ulaw"
#define CT_FLOAT32 "fl32"
#define CT_FLOAT64 "fl64"
#define CT_ADP4 "ADP4" /* DVI ADPCM */
#define CT_DWVW "DWVW" /* TX16W Typhoon */
#define CT_FL32 "FL32" /* Csound Float 32 */
#define CT_IMA4 "ima4" /* IMA */
#define CT_MAC3 "MAC3" /* Apple MACE 3-to-1 */
#define CT_MAC6 "MAC6" /* Appple MACE 6-to-1 */
#define CT_QDMC "QDMC" /* QDesign Music */
#define CT_QCLP "Qclp" /* Qualcomm PureVoice */
#define CT_RT24 "rt24" /* Voxware RT24 */
#define CT_RT29 "rt29" /* Voxware RT29 */
#define CT_X_ALAW "ALAW" /* "SGI CCITT G.711 A-law" */
#define CT_X_ULAW "ULAW" /* "SGI CCITT G.711 u-law" */
#define CT_G722 "G722" /* "SGI CCITT G.722" */
#define CT_G726 "G726" /* "CCITT G.726" */
#define CT_G728 "G728" /* "CCITT G.728" */
#define CT_GSM "GSM " /* "GSM 06-10" */
/* Compression name strings (max CNAME_MAX characters) */
#define CNAME_MAX 32
#define CN_NONE "not compressed"
#define CN_ULAW "\265law 2:1"
#define CN_ALAW "Alaw 2:1"
#define CN_FLOAT32 "IEEE 32-bit float"
#define CN_FLOAT64 "IEEE 64-bit float"
#define CN_X_ALAW "ITU-T G.711 A-law"
#define CN_X_ULAW "ITU-T G.711 mu-law"
#define AI_SF_ULAW (1.)
#define AI_SF_ALAW (1.)
#define AI_SF_NONE8 (128.)
#define AI_SF_NONE16 (1.)
#define AI_SF_NONE24 (1./256.)
#define AI_SF_NONE32 (1./65536.)
#define AI_SF_FLOAT32 (32768.)
#define AI_SF_FLOAT64 (32768.)
#define AIFCVersion1 0xA2805140 /* AIFF-C Version 1 identifier */
struct AI_CkPreamb {
char ckID[4];
uint4_t ckDataSize;
};
struct AI_CkCOMM {
uint2_t numChannels;
uint4_t numSampleFrames;
uint2_t sampleSize;
unsigned char sampleRate[10];
char compressionType[4];
char compressionName[CNAME_MAX+1]; /* Null terminated string */
};
struct AI_CkFVER {
uint4_t timestamp;
};
struct AI_CkSSND {
uint4_t offset;
uint4_t blockSize;
};
#endif /* AIpar_h_ */