windows-nt/Source/XPSP1/NT/drivers/tpg/hwx/volcano/dll/latticefl.c
2020-09-26 16:20:57 +08:00

135 lines
3.5 KiB
C

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//
// Copyright (c) 2001 Microsoft Corporation. All rights reserved.
//
// Module:
// volcano/dll/latticefl.c
//
// Description:
// Functions to load various databases for the recognizer from
// files.
//
// Author:
// hrowley
//
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#include "common.h"
#include "volcanop.h"
#include "brknet.h"
BBOX_PROB_TABLE *g_pProbTable;
UNIGRAM_INFO g_unigramInfo;
BIGRAM_INFO g_bigramInfo;
CLASS_BIGRAM_INFO g_classBigramInfo;
TTUNE_INFO g_ttuneInfo;
LOAD_INFO g_bboxProbInfo;
wchar_t g_pLocale[16];
wchar_t g_pLocaleDir[1024];
wchar_t g_pRecogDir[1024];
HINSTANCE g_hDLL;
VOLCANO_PARAMS_INFO g_vtuneInfo;
VOLCANO_CONFIG g_volcanoConfig;
CENTIPEDE_INFO g_centipedeInfo;
LOAD_INFO g_BrkNetInfo;
LOAD_INFO g_SegmNetInfo;
LOAD_INFO g_CharDetLoadInfo;
BOOL LoadSegmNetFromFile(wchar_t *pwszRecogDir, LOAD_INFO *pLoadInfo);
BOOL LoadCharDetFromFile(wchar_t *wszPath, LOAD_INFO *pLoadInfo);
// Loads the following databases: unigrams, bigrams, class bigrams, tuning, centipede, free input
BOOL LatticeConfigFile(wchar_t *pRecogDir)
{
LatticeConfigInit();
if (!VTuneLoadFile(&g_vtuneInfo, pRecogDir))
{
ASSERT(("Error in VTuneLoadFile", FALSE));
return FALSE;
}
if (!TTuneLoadFile(&g_ttuneInfo, pRecogDir)) {
ASSERT(("Error in TTuneLoadFile", FALSE));
return FALSE;
}
if (!UnigramLoadFile(&g_locRunInfo, &g_unigramInfo, pRecogDir)) {
ASSERT(("Error in UnigramLoadFile", FALSE));
return FALSE;
}
#if !defined(WINCE) && !defined(FAKE_WINCE)
if (!BigramLoadFile(&g_locRunInfo, &g_bigramInfo, pRecogDir)) {
ASSERT(("Error in BigramLoadFile", FALSE));
return FALSE;
}
#endif
if (!ClassBigramLoadFile(&g_locRunInfo, &g_classBigramInfo, pRecogDir)) {
ASSERT(("Error in ClassBigramLoadFile", FALSE));
return FALSE;
}
if (!CentipedeLoadFile(&g_centipedeInfo, pRecogDir, &g_locRunInfo)) {
ASSERT(("Error in CentipedeLoadFile", FALSE));
return FALSE;
}
// Failure here is not an error, it just means we don't support free input
g_pProbTable = LoadBBoxProbTableFile(pRecogDir, &g_bboxProbInfo);
#ifdef USE_IFELANG3
LatticeConfigIFELang3();
#endif
// Don't bother trying to load other databases for free input if the basic
// one is not present.
if (g_pProbTable != NULL)
{
// load the brk net, this is optional
if (LoadBrkNetFromFile (pRecogDir, &g_BrkNetInfo))
{
// load the segm nets, optional
if (!LoadSegmNetFromFile (pRecogDir, &g_SegmNetInfo))
{
// ASSERT(("Error in LoadSegmNetFromFile", FALSE));
// return FALSE;
}
// load the char detector, not optional
if (!LoadCharDetFromFile(pRecogDir, &g_CharDetLoadInfo))
{
ASSERT(("Error in LoadCharDetFromFile", FALSE));
return FALSE;
}
}
}
return TRUE;
}
BOOL LatticeUnconfigFile()
{
BOOL ok = TRUE;
if (!UnigramUnloadFile(&g_unigramInfo)) ok = FALSE;
#if !defined(WINCE) && !defined(FAKE_WINCE)
if (!BigramUnloadFile(&g_bigramInfo)) ok = FALSE;
#endif
if (!ClassBigramUnloadFile(&g_classBigramInfo)) ok = FALSE;
if (!TTuneUnloadFile(&g_ttuneInfo)) ok = FALSE;
if (!CentipedeUnloadFile(&g_centipedeInfo)) ok = FALSE;
if (g_pProbTable != NULL && !UnLoadBBoxProbTableFile(&g_bboxProbInfo)) ok = FALSE;
if (!VTuneUnloadFile(&g_vtuneInfo))
{
ok = FALSE;
}
BrkNetUnloadfile (&g_BrkNetInfo);
return ok;
}