// ISIP recognizer Communicator API

// method: uttproc_rawdata
//
// arguments:
//  char* data: (input) feature input buffer
//  int* num_samples: (input) number of feature data
//  int block: (input) pending blocks (currently unused)
//
// return: bool indicating status
//
// this method decodes an utterance specified by the input mfc data.
//
extern "C" int uttproc_rawdata(short* in_data, int num_samples, int block);

// method: uttproc_mfcdata
//
// arguments:
//  double* data: (input) feature input buffer
//  int* num_samples: (input) number of feature data
//  int block: (input) pending blocks (currently unused)
//
// return: bool indicating status
//
// this method decodes an utterance specified by the input mfc data.
//
extern "C" int uttproc_mfcdata(double *data, int num_samples);

// method: load_models
//
// arguments:
//  char* params: (input) parameter file
//
// return: bool indicating status
//
// this method loads the recognition models
//
extern "C" int load_models(char* params_a);

// method: uttproc_begin
//
// arguments: none
//
// return: bool indicating status
//
// this method resets and re-allocates if necessary the decoder
// contents that need to be cleaned up before decoding a new utterance.
// this is called at the beginning of each utterance.
//
extern "C" int uttproc_begin();

// method: uttproc_end
//
// arguments: none
//
// return: bool indicating status
//
// this method marks that no more data is forthcoming in the current
// utterance. It processes the pending data and obtain the final
// recogition result.
//
extern "C" int uttproc_end();

// method: uttproc_result
//
// arguments: none
//
// return: bool indicating status
//
// this method obtains the final hypothesis for the current utterance
//
extern "C" int uttproc_result(char** hypo);

// method: uttproc_alignment
//
// arguments: none
//
// return: bool indicating status
//
// this method obtains the top hypothesis' alignment for the current utterance
//
extern "C" int uttproc_alignment(char** align);

// method: uttproc_abort
//
// arguments: none
//
// return: bool indicating status
//
// this method abort the current utterance immediately without final
// recognition result.
//
extern "C" int uttproc_abort();

// method: init_frontend
//
// arguments: none
//
// return: a logical flag to indicate status
//
// this method initilizes the frontend from parameter file
//
extern "C" int init_frontend(char* params_a);
