www.pudn.com > av3dec_20050318.zip > ESpar.h
/*------------ Telecommunications & Signal Processing Lab --------------
McGill University
Routine:
ESpar.h
Description:
Declarations for ESPS sampled data feature file headers
Author / revision:
P. Kabal Copyright (C) 1998
$Revision: 1.17 $ $Date: 1998/10/22 12:51:30 $
----------------------------------------------------------------------*/
#ifndef ESpar_h_
#define ESpar_h_
#include /* typedef for uint4_t, etc */
#define ES_LHMIN 333 /* start of generic items */
/* Generic item, "record freq"
15 short
3 short generic item identifier
record_freq\0 char identifier (null terminated, multiple of 4 bytes)
1 long data count
1 short data type (double)
*/
#define SSIZE(str) ((sizeof (str)) - 1) /* Size of string (no null) */
#define RECORD_FREQ "\0\015\0\003record_freq\0\0\0\0\001\0\001"
#define ES_MAXGENERIC 8192
#define ES_MAXINFO 256
/* File magic value in file byte order. ESPS files can be written in either
big-endian or little-endian byte order.
*/
#define FM_ESPS "\0\0\152\32"
#define FM_ESPS_SWAPPED "\32\152\0\0"
/* File codes */
#define ES_FT_SD 9 /* (Old) Sampled data file */
#define ES_FT_FEA 13 /* Feature file */
#define ES_FEA_SPEC 7 /* Feature file - spectrum file subcode */
#define ES_FEA_SD 8 /* Feature file - sampled data file subcode */
#define ES_FEA_FILT 9 /* Feature file - filter file subcode */
/* Machine codes */
#define ES_SUN4_CODE 4 /* Sun sparc 4 machine code */
#define ES_DS3100_CODE 7 /* Decstation machine code */
#define ES_SG_CODE 9 /* SGI machine code */
#define ES_HP700_CODE 21 /* HP machine code */
/* Data codes for generic header items */
#define ES_DOUBLE 1
#define ES_FLOAT 2
#define ES_LONG 3
#define ES_SHORT 4
struct ES_preamb {
/* int4_t Machine_code; */ /* machine which wrote file */
/* int4_t Check_code; */ /* version check code (3000) */
int4_t Data_offset; /* data offset in bytes */
int4_t Record_size; /* record size */
char Magic[4]; /* file magic */
/* int4_t Edr; */ /* EDR_ESPS flag */
/* int4_t Align_pad_size; */ /* alignment pad */
/* int4_t Foreign_hd; */ /* pointer to foreign header */
};
struct ES_fixhead {
int2_t Type; /* File type (e.g. ES_FT_FEA) */
/* int2_t pad1; */
char Magic[4]; /* File magic */
char Datetime[26]; /* File creation date */
char Version[8]; /* Header version */
char Prog[16]; /* Program name */
char Vers[8]; /* Program version */
char Progdate[26]; /* Program compile date */
int4_t Ndrec; /* Number of data records (often bogus) */
/* int2_t Tag; */ /* Non-zero if data is tagged */
/* int2_t nd1; */
int4_t Ndouble;
int4_t Nfloat;
int4_t Nlong;
int4_t Nshort;
int4_t Nchar;
/* int4_t Fixsiz; */ /* Fixed header structure size (40 longs) */
/* int4_t Hsize; */ /* Variable header structure size (bytes) */
/* char User[8]; */
/* int2_t spares[10]; */
};
struct ES_FEAhead {
int2_t Fea_type; /* Feature file subcode (e.g. ES_FEA_SD) */
/* int2_t Segment_labelled; */
/* uint_2 Field_count; */
/* int2_t Field_order; */
};
/* Structure for record frequency */
struct ES_recfreq {
int2_t code1; /* code1 = 3 */
int2_t code2; /* code2 = 3 */
char c[12]; /* "record_freq" */
int4_t count; /* count = 1 */
uint2_t data_code; /* data_code = 1 (double) */
double8_t sfreq; /* sampling frequency */
};
#endif /* ESpar_h_ */