www.pudn.com > av3dec_20050318.zip > AO.h


/*------------ Telecommunications & Signal Processing Lab -------------- 
                         McGill University 
 
Routine: 
  AO.h 
 
Description: 
  Declarations for audio utility program options routines 
 
Author / revision: 
  P. Kabal  Copyright (C) 1999 
  $Revision: 1.24 $  $Date: 1999/06/14 14:14:09 $ 
 
----------------------------------------------------------------------*/ 
 
#ifndef AO_h_ 
#define AO_h_ 
 
#include  
#include 		/* FILENAME_MAX */ 
 
#include 	/* struct AF_NHpar, AFILE */ 
#include 	/* SY_OS */ 
 
#define AFNH_ENV	"$AF_NOHEADER" 
#define AFFTYPE_ENV	"$AF_FILETYPE" 
 
#define AO_LIM_UNDEF	LONG_MIN	/* Undefined Limits */ 
 
struct AO_FIpar { 
  char Fname[FILENAME_MAX]; 
  float Gain; 
  long int Lim[2]; 
  int Ftype; 
  struct AF_NHpar NHpar; 
}; 
struct AO_FOpar { 
  char Fname[FILENAME_MAX]; 
  long int Nframe; 
  double Sfreq; 
  int Dformat; 
  int Ftype; 
  const char *Hinfo; 
}; 
 
/* Option parameters */ 
struct AO_CmdArg { 
  const char **Argv;	/* Argument pointer */ 
  int Argc;		/* Argument count */ 
  int Index;		/* Argument index */ 
  int EndOptions;	/* End-of-options indicator */ 
}; 
 
/* Initialization macros */ 
#define FIpar_INIT(fi)	{ \ 
	if (AFsetNHpar (AFNH_ENV)) \ 
	  UTwarn ("%s - %s \"%s\"", PROGRAM, AOM_BadEnv, &(AFNH_ENV)[1]); \ 
	if (AFsetFileType (AFFTYPE_ENV)) \ 
	  UTwarn ("%s - %s \"%s\"", PROGRAM, AOM_BadEnv, &(AFFTYPE_ENV)[1]); \ 
	(fi)->Fname[0] = '\0'; \ 
	(fi)->Gain = 1.0; \ 
	(fi)->Lim[0] = 0L; \ 
	(fi)->Lim[1] = AO_LIM_UNDEF; \ 
	(fi)->Ftype = AFopt_FtypeI; \ 
	(fi)->NHpar = AFopt_NHpar; } 
 
#define FOpar_INIT(fo) { \ 
	(fo)->Fname[0] = '\0'; \ 
	(fo)->Nframe = AF_NFRAME_UNDEF; \ 
	(fo)->Sfreq = 0.0; \ 
	(fo)->Dformat = FD_UNDEF; \ 
	(fo)->Ftype = FTW_UNDEF; \ 
	(fo)->Hinfo = NULL; } 
 
/* Default output file type */ 
#if (SY_OS == SY_OS_UNIX) 
#  define AO_FTYPEO_DEFAULT	FTW_AU 
#else 
#  define AO_FTYPEO_DEFAULT	FTW_WAVE 
#endif 
 
/* Default output data type */ 
#define AO_DFORMATO_DEFAULT	FD_INT16 
 
/* Warning messages */ 
#define AOM_BadEnv	"Invalid value for environment variable" 
#define AOM_DiffLim	"Input file frame limits differ, using maximum" 
#define AOM_DiffNFrame	"Different numbers of sample frames, using maximum" 
#define AOM_DiffNSamp	"Different numbers of samples, using maximum" 
#define AOM_NotAllLim	"Not all frame limits defined" 
#define AOM_NotAllNSamp	"Number of samples not defined for all files" 
 
/* Error messages */ 
#define AOM_BadData	"Invalid data format specification" 
#define AOM_BadFType	"Invalid file type specification" 
#define AOM_BadGain	"Invalid gain value" 
#define AOM_BadNFrame	"Invalid number of sample frames" 
#define AOM_BadNHPar	"Error setting headerless file parameters" 
#define AOM_BadOption	"Option error, use -h for a list of options" 
#define AOM_BadSFreq	"Invalid sampling frequency" 
#define AOM_BadLimits	"Invalid limits specification" 
#define AOM_DataFType	"Invalid data format for output file type" 
#define AOM_InvFTypeC	"Invalid output file type code" 
#define AOM_stdin1	"Error, standard input can be used only once" 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
/* Prototypes */ 
struct AO_CmdArg * 
AOArgs (void); 
int 
AOdecFI (struct AO_FIpar *FI); 
int 
AOdecFO (struct AO_FOpar *FO); 
int 
AOdecHelp (const char Version[], const char Usage[]); 
int 
AOdecOpt (const char *OptTable[], const char **OptArg); 
void 
AOinitOpt (const int argc, const char *argv[]); 
long int 
AOnFrame (AFILE *AFp[], const struct AO_FIpar FI[], int Nifiles, 
	  long int Nframe); 
int 
AOsetFormat (const struct AO_FOpar *FO, AFILE *AFp[], int Nf); 
void 
AOstdin (const struct AO_FIpar FI[], int N); 
 
#ifdef __cplusplus 
} 
#endif 
 
#endif /* AO_h_ */