// file: decoder_constants.h
//
// definitions file for the decoder class
//

// make sure definitions are made only once
//
#ifndef __DECODER_CONSTANTS
#define __DECODER_CONSTANTS

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

#ifndef __ISIP_HASH_TABLE_CONSTANTS
#include <hash_table_constants.h>
#endif

#ifndef __ISIP_INSTANCE_CONSTANTS
#include <instance_constants.h>
#endif

#ifndef __ISIP_LATTICE_CONSTANTS
#include <lattice_constants.h>
#endif

#ifndef __ISIP_LEX_TREE_CONSTANTS
#include <lex_tree_constants.h>
#endif

#ifndef __ISIP_LINK_LIST_CONSTANTS
#include <link_list_constants.h>
#endif

#ifndef __ISIP_MEMORY_MANAGER_CONSTANTS
#include <memory_manager_constants.h>
#endif

#ifndef __ISIP_MODEL_CONSTANTS
#include <model_constants.h>
#endif

#ifndef __ISIP_NGRAM_CONSTANTS
#include <ngram_constants.h>
#endif

#ifndef __ISIP_PHONE_CONSTANTS
#include <phone_constants.h>
#endif

#ifndef __ISIP_STATE_CONSTANTS
#include <state_constants.h>
#endif

#ifndef __ISIP_TOKEN_CONSTANTS
#include <token_constants.h>
#endif

#ifndef __ISIP_TRACE_CONSTANTS
#include <trace_constants.h>
#endif

#ifndef __ISIP_WORD_CONSTANTS
#include <word_constants.h>
#endif

// name of the class
//
#define DEC_CLASS_NAME (char_1*)"Decoder"

// characters used to trigger filename expansion via a system call ---
// since this is expensive, we only want to do it when it is
// absolutely necessary
//
#define DEC_ENV_DELIMITERS (char_1*)"$~(){}[]?"

// defaultindex constants
//
#define DEC_DEFAULT_INDEX (int_4)-1
#define DEC_DEFAULT_VALUE (float_4)0

// define a really large negative number as basic score
//
#define DEC_DEFAULT_SCORE MODEL_NOTRANS_SCORE

// default acoustic and linguistic context units
//
#define DEC_MONOPHONE_SIZE (int_4)1
#define DEC_TRIPHONE_SIZE (int_4)3

// define some special phones
//
#define DEC_SP_PHONE LXN_SP_PHONE
#define DEC_SILENCE_PHONE (int_4)1

// define some special words
//
#define DEC_SENT_START_WORD WRD_SENT_START_WORD
#define DEC_SENT_END_WORD WRD_SENT_END_WORD

// strings for user-level control input in demo mode
//
#define DEC_ABORT (int_4)-1

// output something after every so many frames to keep the user happy
//
#define DEC_FRAMES_OUTNUM (int_4)100
#define DEC_FRAMES_OUTSTRING ISIP_STRING_PERIOD

// number of utterances to decode before cleaning up
//
#define DEC_CLEANUP_UTTNUM (int_4)5

// block sizes for traces
//
#define DEC_DEFAULT_BLOCK_SIZE (int_4)9999
#define DEC_TRACE_BLOCK_SIZE (int_4)9999
#define DEC_NODE_BLOCK_SIZE (int_4)99999

// define levels of the search network
//
#define DEC_STATE_LEVEL TRACE_STATE_LEVEL
#define DEC_MODEL_LEVEL TRACE_MODEL_LEVEL
#define DEC_WORD_LEVEL TRACE_WORD_LEVEL
#define DEC_NUM_LEVELS TRACE_NUM_LEVELS

// path number constants
//
#define DEC_NUM_HISTORY (int_4)1
#define DEC_NUM_NBEST (int_4)1

// define how many backpointers are to be kept at each level
//
#define DEC_STATE_BACKPTR DEC_NUM_HISTORY
#define DEC_PHONE_BACKPTR DEC_NUM_HISTORY
#define DEC_WORD_BACKPTR DEC_NUM_HISTORY

// define context mode
//
#define DEC_MONO_PHONE_MODE (int_4)0
#define DEC_WORD_INTERNAL_MODE (int_4)1
#define DEC_CROSS_WORD_MODE (int_4)2

// define alignment level mode
//
#define DEC_STATE_ALIGN_MODE (int_4)0
#define DEC_MODEL_ALIGN_MODE (int_4)1
#define DEC_WORD_ALIGN_MODE (int_4)2

// define input format
//
#define DEC_BINARY_FORMAT (int_4)0
#define DEC_ASCII_FORMAT (int_4)1

// define input feature file format
//
#define DEC_ISIP_PROTO_FORMAT (int_4)0
#define DEC_HTK_FORMAT (int_4)1

// define default delta and acceleration computtaional modes
//
#define DEC_DEFAULT_DELTA_WIN (int_4)0
#define DEC_DEFAULT_DELTA ISIP_FALSE
#define DEC_DEFAULT_ACC ISIP_FALSE

// define input feature file format
//
#define DEC_UTT_START (int_4)0
#define DEC_UTT_DURING (int_4)1
#define DEC_UTT_END (int_4)2

// define functional mode
//
#define DEC_FORCE_ALIGN_FUNCTION (int_4)0
#define DEC_LATTICE_RESCORE_FUNCTION (int_4)1
#define DEC_NGRAM_DECODE_FUNCTION (int_4)2
#define DEC_LATTICE_GENERATE_FUNCTION (int_4)3
#define DEC_LATTICE_VERIFY_FUNCTION (int_4)4
#define DEC_LATTICE_LATTICE_FUNCTION (int_4)5
#define DEC_LATTICE_WER_FUNCTION (int_4)6
#define DEC_NBEST_LIST_FUNCTION (int_4)7

// default values for the language model
//
#define DEC_NGRAM_ORDER (int_4)2
#define DEC_LM_SCALE (float_4)1
#define DEC_WORD_PENALTY (float_4)0

// default values for the nbest pruning parameters
//
#define DEC_NUM_NBEST_MAX_PATH (int_4)50;
#define DEC_NUM_NBEST_BEAM (int_4)100;

// define segment level mode
//
#define DEC_NONE_SEGMENT_MODE (int_4)0
#define DEC_MODEL_SEGMENT_MODE (int_4)1

// end of file
//
#endif
