// file: extract_feature_constants.h
//

// Make sure this file is only included once
//
#ifndef __ISIP_EXTRACT_FEATURE_CONSTANTS
#define __ISIP_EXTRACT_FEATURE_CONSTANTS

// isip include files
//
#ifndef __ISIP_INTEGRAL_CONSTANTS
#include <integral_constants.h>
#endif

#ifndef __ISIP_SIGNAL_CONSTANTS
#include <signal_constants.h>
#endif

#ifndef __ISIP_WINDOW_CONSTANTS
#include <window_constants.h>
#endif

// define the help file
//
#define EXTF_HELP_FILE "$ISIP_PROTO/doc/extract_feature.help"

// define the command-line parameter flags
//
#define EXTF_OPT_HELP (char_1*)"-help"
#define EXTF_OPT_FILE_IN (char_1*)"-input"
#define EXTF_OPT_FILE_OUT (char_1*)"-output"
#define EXTF_OPT_WINDOW_TYPE (char_1*)"-window_type"
#define EXTF_OPT_FRAME_DUR (char_1*)"-frame_dur"
#define EXTF_OPT_WINDOW_DUR (char_1*)"-window_dur"
#define EXTF_OPT_SF (char_1*)"-sf"
#define EXTF_OPT_NUM_CHANS (char_1*)"-num_chans"
#define EXTF_OPT_SWAP (char_1*)"-swap_bytes"
#define EXTF_OPT_PRE_EMPH_COEFF (char_1*)"-pre_emph_coeff"
#define EXTF_OPT_LIFTER_COEFF (char_1*)"-lifter_coeff"
#define EXTF_OPT_CHAN_NUM (char_1*)"-channel"
#define EXTF_OPT_DELTA_WIN (char_1*)"-delta_win"
#define EXTF_OPT_NUM_FBANKS (char_1*)"-num_fbanks"
#define EXTF_OPT_MEL_WIDTH (char_1*)"-mel_width"
#define EXTF_OPT_NORMALIZE (char_1*)"-cms"
#define EXTF_OPT_OUT_MODE (char_1*)"-output_mode"
#define EXTF_OPT_ALGO_MEAN (char_1*)"-energy"
#define EXTF_OPT_ALGO_FBA (char_1*)"-fba"
#define EXTF_OPT_ALGO_FFT_MFCC (char_1*)"-mfcc"
#define EXTF_OPT_OUT_MODE_ASCII (char_1*)"ascii"
#define EXTF_OPT_OUT_MODE_BINA (char_1*)"binary"
#define EXTF_OPT_ZSM (char_1*)"-zero_mean"
#define EXTF_OPT_EN (char_1*)"-energy_norm"
#define EXTF_OPT_DELTA (char_1*)"-delta"
#define EXTF_OPT_DELTA_DELTA (char_1*)"-acc"
#define EXTF_OPT_VTLN (char_1*)"-vtln"
#define EXTF_OPT_NON_VTLN (char_1*)"-non_vtln"
#define EXTF_OPT_VTLN_FACTOR (char_1*)"-vtln_factor"
#define EXTF_OPT_BILINEAR (char_1*)"-bilinear"
#define EXTF_OPT_C0 (char_1*)"-c0" // c1 c2 .. cn c0 log-energy

// define the default parameter values
//
#define EXTF_DEF_WINDOW_TYPE WIN_OPT_HAMMING
#define EXTF_DEF_USE_PRE_EMPH ISIP_FALSE
#define EXTF_DEF_USE_LIFTERING ISIP_FALSE
#define EXTF_DEF_FRAME_DUR (float_8)10.0
#define EXTF_DEF_WINDOW_DUR (float_8)20.0
#define EXTF_DEF_SF (float_8)8000.0
#define EXTF_DEF_NUM_CHANS (int_4)1
#define EXTF_DEF_SWAP (logical_1)ISIP_FALSE
#define EXTF_DEF_LIFTER_COEFF (float_8)22.0
#define EXTF_DEF_PRE_COEFF (float_8)1.0
#define EXTF_DEF_CHAN_NUM (int_4)0
#define EXTF_DEF_NUM_MEAN (int_4)0
#define EXTF_DEF_NUM_FBA  (int_4)0
#define EXTF_DEF_FFT_MFCC (int_4)12
#define EXTF_DEF_DELTA  (logical_1)ISIP_FALSE
#define EXTF_DEF_DELTA_DELTA  (logical_1)ISIP_FALSE
#define EXTF_DEF_DELTA_WIN (int_4)2
#define EXTF_DEF_NUM_FBANKS (int_4)24
#define EXTF_DEF_NORMALIZE (logical_1)0
#define EXTF_DEF_OUT_MODE (int_4)0
#define EXTF_DEF_VTLN (logical_1)ISIP_FALSE
#define EXTF_DEF_VTLN_FACTOR (float_8)1.0

#define EXTF_ALGO_MEAN 0
#define EXTF_ALGO_FBA 1
#define EXTF_ALGO_FFT_MFCC 2

#define EXTF_NUM_ALGORITHMS 3

// define the default number of mfcc's
//
#define EXTF_NUM_MFCC 12

// define the number of bytes per sample per channel in the file
//
#define EXTF_NUM_BYTES (int_4)2

// define energy floor and silence floor in dB
//
#define EXTF_MIN_ENERGY (float_8)0.0
#define EXTF_SIL_FLOOR (float_8)50.0

// define a conversion from milliseconds to seconds
//
#define EXTF_MSEC_TO_SEC (float_8)0.001

// define the coefficient for the hamming window
//
#define EXTF_FREQ_WARP	(float_8)0.6

// define Fourier Transform parameters
//
#define EXTF_FT_ORDER	256
#define EXTF_LPSPEC_ORDER	256
#define EXTF_FT_ALGO	(char_1*)"split_radix"
#define EXTF_FT_DTYPE	FT_REAL

// define the output mode
//
#define EXTF_OUT_MODE_ASCII (int_4)0
#define EXTF_OUT_MODE_BINA (int_4)1

// define the VTLN algorithm
//
#define EXTF_BILINEAR 0
#define EXTF_DEF_VTLN_ALGO EXTF_BILINEAR

// define the UTTERANCE FLAG
//
#define EXTF_UTT_START 0
#define EXTF_UTT_DURING 1
#define EXTF_UTT_END 2

// end of file
//
#endif

