From e69f0f41f06d5fde4d381466a8843f9da6027f86 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sat, 2 Jan 2016 18:55:22 +0000 Subject: [PATCH] Make LoadMbrolaTable return espeak_ng_STATUS. --- src/include/espeak-ng/espeak_ng.h | 2 ++ src/libespeak-ng/synth_mbrola.c | 16 +++++++++------- src/libespeak-ng/synthesize.h | 2 +- src/libespeak-ng/voices.c | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/include/espeak-ng/espeak_ng.h b/src/include/espeak-ng/espeak_ng.h index 674dec06..673e8028 100644 --- a/src/include/espeak-ng/espeak_ng.h +++ b/src/include/espeak-ng/espeak_ng.h @@ -44,6 +44,8 @@ typedef enum { ENS_NOT_INITIALIZED = 0x100004FF, ENS_AUDIO_ERROR = 0x100005FF, ENS_VOICE_NOT_FOUND = 0x100006FF, + ENS_MBROLA_NOT_FOUND = 0x100007FF, + ENS_MBROLA_VOICE_NOT_FOUND = 0x100008FF, } espeak_ng_STATUS; typedef enum { diff --git a/src/libespeak-ng/synth_mbrola.c b/src/libespeak-ng/synth_mbrola.c index a867a092..cc767e15 100644 --- a/src/libespeak-ng/synth_mbrola.c +++ b/src/libespeak-ng/synth_mbrola.c @@ -19,6 +19,7 @@ #include "config.h" +#include #include #include #include @@ -106,7 +107,7 @@ static MBROLA_TAB *mbrola_tab = NULL; static int mbrola_control = 0; static int mbr_name_prefix = 0; -espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate) +espeak_ng_STATUS LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate) { // Load a phoneme name translation table from espeak-data/mbrola @@ -123,7 +124,7 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int if (mbrola_voice == NULL) { samplerate = samplerate_native; SetParameter(espeakVOICETYPE, 0, 0); - return EE_OK; + return ENS_OK; } sprintf(path, "%s/mbrola/%s", path_home, mbrola_voice); @@ -145,12 +146,12 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int #ifdef PLATFORM_WINDOWS if (load_MBR() == FALSE) { // load mbrola.dll fprintf(stderr, "Can't load mbrola.dll\n"); - return EE_INTERNAL_ERROR; + return ENS_MBROLA_NOT_FOUND; } #endif if (init_MBR(path) != 0) // initialise the required mbrola voice - return EE_NOT_FOUND; + return ENS_MBROLA_VOICE_NOT_FOUND; setNoError_MBR(1); // don't stop on phoneme errors @@ -158,14 +159,15 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int sprintf(path, "%s/mbrola_ph/%s", path_home, phtrans); size = GetFileLength(path); if ((f_in = fopen(path, "rb")) == NULL) { + int error = errno; close_MBR(); - return EE_NOT_FOUND; + return error; } if ((mbrola_tab = (MBROLA_TAB *)realloc(mbrola_tab, size)) == NULL) { fclose(f_in); close_MBR(); - return EE_INTERNAL_ERROR; + return ENOMEM; } mbrola_control = Read4Bytes(f_in); @@ -183,7 +185,7 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int SetParameter(espeakVOICETYPE, 1, 0); strcpy(mbrola_name, mbrola_voice); mbrola_delay = 1000; // improve synchronization of events - return EE_OK; + return ENS_OK; } static int GetMbrName(PHONEME_LIST *plist, PHONEME_TAB *ph, PHONEME_TAB *ph_prev, PHONEME_TAB *ph_next, int *name2, int *split, int *control) diff --git a/src/libespeak-ng/synthesize.h b/src/libespeak-ng/synthesize.h index 218057d9..b5c8099f 100644 --- a/src/libespeak-ng/synthesize.h +++ b/src/libespeak-ng/synthesize.h @@ -542,7 +542,7 @@ extern double sonicSpeed; extern int n_soundicon_tab; extern SOUND_ICON soundicon_tab[N_SOUNDICON_TAB]; -espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate); +espeak_ng_STATUS LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate); espeak_ng_STATUS SetParameter(int parameter, int value, int relative); int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbrola); int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume); diff --git a/src/libespeak-ng/voices.c b/src/libespeak-ng/voices.c index d4e21140..9b0ff8f0 100644 --- a/src/libespeak-ng/voices.c +++ b/src/libespeak-ng/voices.c @@ -869,7 +869,7 @@ voice_t *LoadVoice(const char *vname, int control) name2[0] = 0; sscanf(p, "%s %s %d", name1, name2, &srate); - if (LoadMbrolaTable(name1, name2, &srate) != EE_OK) + if (LoadMbrolaTable(name1, name2, &srate) != ENS_OK) fprintf(stderr, "mbrola voice not found\n"); voice->samplerate = srate; }