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_ */