Contribute to #68 Reduce count of globals / externs that could be a file-local static variablesmaster
int ix; | int ix; | ||||
unsigned int digit_count = 0; | unsigned int digit_count = 0; | ||||
char *p; | char *p; | ||||
ALPHABET *alphabet; | |||||
const ALPHABET *alphabet; | |||||
int dict_flags0 = 0; | int dict_flags0 = 0; | ||||
MatchRecord match1 = { 0 }; | MatchRecord match1 = { 0 }; | ||||
MatchRecord match2 = { 0 }; | MatchRecord match2 = { 0 }; |
#include "voice.h" // for FreeVoiceList, VoiceReset, current_... | #include "voice.h" // for FreeVoiceList, VoiceReset, current_... | ||||
#include "wavegen.h" // for WavegenFill, WavegenInit, WcmdqUsed | #include "wavegen.h" // for WavegenFill, WavegenInit, WcmdqUsed | ||||
unsigned char *outbuf = NULL; | |||||
int outbuf_size = 0; | |||||
unsigned char *out_start; | |||||
static unsigned char *outbuf = NULL; | |||||
static int outbuf_size = 0; | |||||
static unsigned char *out_start; | |||||
espeak_EVENT *event_list = NULL; | espeak_EVENT *event_list = NULL; | ||||
int event_list_ix = 0; | |||||
int n_event_list; | |||||
long count_samples; | |||||
static int event_list_ix = 0; | |||||
static int n_event_list; | |||||
static long count_samples; | |||||
#ifdef HAVE_PCAUDIOLIB_AUDIO_H | #ifdef HAVE_PCAUDIOLIB_AUDIO_H | ||||
struct audio_object *my_audio = NULL; | |||||
static struct audio_object *my_audio = NULL; | |||||
#endif | #endif | ||||
static unsigned int my_unique_identifier = 0; | static unsigned int my_unique_identifier = 0; | ||||
static int min_buffer_length = 60; // minimum buffer length in ms | static int min_buffer_length = 60; // minimum buffer length in ms | ||||
static espeak_ng_STATUS err = ENS_OK; | static espeak_ng_STATUS err = ENS_OK; | ||||
t_espeak_callback *synth_callback = NULL; | |||||
static t_espeak_callback *synth_callback = NULL; | |||||
int (*uri_callback)(int, const char *, const char *) = NULL; | int (*uri_callback)(int, const char *, const char *) = NULL; | ||||
int (*phoneme_callback)(const char *) = NULL; | int (*phoneme_callback)(const char *) = NULL; | ||||
int current_phoneme_table; | int current_phoneme_table; | ||||
PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; | PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; | ||||
unsigned short *phoneme_index = NULL; | |||||
char *phondata_ptr = NULL; | |||||
static unsigned short *phoneme_index = NULL; | |||||
static char *phondata_ptr = NULL; | |||||
unsigned char *wavefile_data = NULL; | unsigned char *wavefile_data = NULL; | ||||
static unsigned char *phoneme_tab_data = NULL; | static unsigned char *phoneme_tab_data = NULL; | ||||
int n_phoneme_tables; | |||||
static int n_phoneme_tables; | |||||
PHONEME_TAB_LIST phoneme_tab_list[N_PHONEME_TABS]; | PHONEME_TAB_LIST phoneme_tab_list[N_PHONEME_TABS]; | ||||
int phoneme_tab_number = 0; | int phoneme_tab_number = 0; | ||||
extern unsigned char *out_ptr; | extern unsigned char *out_ptr; | ||||
extern unsigned char *out_end; | extern unsigned char *out_end; | ||||
extern espeak_EVENT *event_list; | extern espeak_EVENT *event_list; | ||||
extern t_espeak_callback *synth_callback; | |||||
extern const int version_phdata; | extern const int version_phdata; | ||||
void DoEmbedded(int *embix, int sourceix); | void DoEmbedded(int *embix, int sourceix); |
#define OFFSET_ETHIOPIC 0x1200 | #define OFFSET_ETHIOPIC 0x1200 | ||||
// character ranges must be listed in ascending unicode order | // character ranges must be listed in ascending unicode order | ||||
ALPHABET alphabets[] = { | |||||
const ALPHABET alphabets[] = { | |||||
{ "_el", OFFSET_GREEK, 0x380, 0x3ff, L('e', 'l'), AL_DONT_NAME | AL_NOT_LETTERS | AL_WORDS }, | { "_el", OFFSET_GREEK, 0x380, 0x3ff, L('e', 'l'), AL_DONT_NAME | AL_NOT_LETTERS | AL_WORDS }, | ||||
{ "_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0 }, | { "_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0 }, | ||||
{ "_hy", OFFSET_ARMENIAN, 0x530, 0x58f, L('h', 'y'), AL_WORDS }, | { "_hy", OFFSET_ARMENIAN, 0x530, 0x58f, L('h', 'y'), AL_WORDS }, | ||||
{ NULL, 0, 0, 0, 0, 0 } | { NULL, 0, 0, 0, 0, 0 } | ||||
}; | }; | ||||
ALPHABET *AlphabetFromChar(int c) | |||||
const ALPHABET *AlphabetFromChar(int c) | |||||
{ | { | ||||
// Find the alphabet from a character. | // Find the alphabet from a character. | ||||
ALPHABET *alphabet = alphabets; | |||||
const ALPHABET *alphabet = alphabets; | |||||
while (alphabet->name != NULL) { | while (alphabet->name != NULL) { | ||||
if (c <= alphabet->range_max) { | if (c <= alphabet->range_max) { |
bool skipping_text; // waiting until word count, sentence count, or named marker is reached | bool skipping_text; // waiting until word count, sentence count, or named marker is reached | ||||
int end_character_position; | int end_character_position; | ||||
int count_sentences; | int count_sentences; | ||||
int count_words; | |||||
static int count_words; | |||||
int clause_start_char; | int clause_start_char; | ||||
int clause_start_word; | int clause_start_word; | ||||
bool new_sentence; | |||||
static bool new_sentence; | |||||
static int word_emphasis = 0; // set if emphasis level 3 or 4 | static int word_emphasis = 0; // set if emphasis level 3 or 4 | ||||
static int embedded_flag = 0; // there are embedded commands to be applied to the next phoneme, used in TranslateWord2() | static int embedded_flag = 0; // there are embedded commands to be applied to the next phoneme, used in TranslateWord2() | ||||
static int max_clause_pause = 0; | static int max_clause_pause = 0; | ||||
static bool any_stressed_words; | static bool any_stressed_words; | ||||
int pre_pause; | int pre_pause; | ||||
ALPHABET *current_alphabet; | |||||
static ALPHABET *current_alphabet; | |||||
char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes | char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes | ||||
int n_ph_list2; | int n_ph_list2; |
void InitNamedata(void); | void InitNamedata(void); | ||||
void InitText(int flags); | void InitText(int flags); | ||||
void InitText2(void); | void InitText2(void); | ||||
ALPHABET *AlphabetFromChar(int c); | |||||
const ALPHABET *AlphabetFromChar(int c); | |||||
Translator *SelectTranslator(const char *name); | Translator *SelectTranslator(const char *name); | ||||
int SetTranslator2(const char *name); | int SetTranslator2(const char *name); |
static void ChangeWordStress(Translator *tr, char *word, int new_stress); | static void ChangeWordStress(Translator *tr, char *word, int new_stress); | ||||
static int CheckDottedAbbrev(char *word1); | static int CheckDottedAbbrev(char *word1); | ||||
static int NonAsciiNumber(int letter); | static int NonAsciiNumber(int letter); | ||||
static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int spell_word, ALPHABET *current_alphabet, char word_phonemes[]); | |||||
static int TranslateLetter(Translator *tr, char *word, char *phonemes, int control, ALPHABET *current_alphabet); | |||||
static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int spell_word, const ALPHABET *current_alphabet, char word_phonemes[]); | |||||
static int TranslateLetter(Translator *tr, char *word, char *phonemes, int control, const ALPHABET *current_alphabet); | |||||
static int Unpronouncable(Translator *tr, char *word, int posn); | static int Unpronouncable(Translator *tr, char *word, int posn); | ||||
static int Unpronouncable2(Translator *tr, char *word); | static int Unpronouncable2(Translator *tr, char *word); | ||||
*word = 0; | *word = 0; | ||||
} | } | ||||
static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int spell_word, ALPHABET *current_alphabet, char word_phonemes[]) | |||||
static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int spell_word, const ALPHABET *current_alphabet, char word_phonemes[]) | |||||
{ | { | ||||
int posn = 0; | int posn = 0; | ||||
int capitals = 0; | int capitals = 0; | ||||
}; | }; | ||||
static int TranslateLetter(Translator *tr, char *word, char *phonemes, int control, ALPHABET *current_alphabet) | |||||
static int TranslateLetter(Translator *tr, char *word, char *phonemes, int control, const ALPHABET *current_alphabet) | |||||
{ | { | ||||
// get pronunciation for an isolated letter | // get pronunciation for an isolated letter | ||||
// return number of bytes used by the letter | // return number of bytes used by the letter | ||||
int n_bytes; | int n_bytes; | ||||
int letter; | int letter; | ||||
int len; | int len; | ||||
ALPHABET *alphabet; | |||||
const ALPHABET *alphabet; | |||||
int al_offset; | int al_offset; | ||||
int al_flags; | int al_flags; | ||||
int number; | int number; | ||||
int vowel_posn = 9; | int vowel_posn = 9; | ||||
int index; | int index; | ||||
int count; | int count; | ||||
ALPHABET *alphabet; | |||||
const ALPHABET *alphabet; | |||||
utf8_in(&c, word); | utf8_in(&c, word); | ||||
if ((tr->letter_bits_offset > 0) && (c < 0x241)) { | if ((tr->letter_bits_offset > 0) && (c < 0x241)) { |
static void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v); | static void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v); | ||||
voice_t *wvoice = NULL; | |||||
static voice_t *wvoice = NULL; | |||||
static int option_harmonic1 = 10; | static int option_harmonic1 = 10; | ||||
static int flutter_amp = 64; | static int flutter_amp = 64; | ||||
static int glottal_flag = 0; | static int glottal_flag = 0; | ||||
static int glottal_reduce = 0; | static int glottal_reduce = 0; | ||||
WGEN_DATA wdata; | |||||
static WGEN_DATA wdata; | |||||
static int amp_ix; | static int amp_ix; | ||||
static int amp_inc; | static int amp_inc; | ||||
unsigned char *out_end; | unsigned char *out_end; | ||||
espeak_ng_OUTPUT_HOOKS* output_hooks = NULL; | espeak_ng_OUTPUT_HOOKS* output_hooks = NULL; | ||||
int const_f0 = 0; | |||||
static int const_f0 = 0; | |||||
// the queue of operations passed to wavegen from sythesize | // the queue of operations passed to wavegen from sythesize | ||||
intptr_t wcmdq[N_WCMDQ][4]; | intptr_t wcmdq[N_WCMDQ][4]; | ||||
int embedded_default[N_EMBEDDED_VALUES] = { 0, 50, espeakRATE_NORMAL, 100, 50, 0, 0, 0, espeakRATE_NORMAL, 0, 0, 0, 0, 0, 0 }; | int embedded_default[N_EMBEDDED_VALUES] = { 0, 50, espeakRATE_NORMAL, 100, 50, 0, 0, 0, espeakRATE_NORMAL, 0, 0, 0, 0, 0, 0 }; | ||||
static int embedded_max[N_EMBEDDED_VALUES] = { 0, 0x7fff, 750, 300, 99, 99, 99, 0, 750, 0, 0, 0, 0, 4, 0 }; | static int embedded_max[N_EMBEDDED_VALUES] = { 0, 0x7fff, 750, 300, 99, 99, 99, 0, 750, 0, 0, 0, 0, 4, 0 }; | ||||
int current_source_index = 0; | |||||
#if HAVE_SONIC_H | #if HAVE_SONIC_H | ||||
static sonicStream sonicSpeedupStream = NULL; | static sonicStream sonicSpeedupStream = NULL; | ||||
double sonicSpeed = 1.0; | double sonicSpeed = 1.0; | ||||
case WCMD_MARKER: | case WCMD_MARKER: | ||||
marker_type = q[0] >> 8; | marker_type = q[0] >> 8; | ||||
MarkerEvent(marker_type, q[1], q[2], q[3], out_ptr); | MarkerEvent(marker_type, q[1], q[2], q[3], out_ptr); | ||||
if (marker_type == 1) // word marker | |||||
current_source_index = q[1] & 0xffffff; | |||||
break; | break; | ||||
case WCMD_AMPLITUDE: | case WCMD_AMPLITUDE: | ||||
SetAmplitude(length, (unsigned char *)q[2], q[3]); | SetAmplitude(length, (unsigned char *)q[2], q[3]); |