@@ -307,6 +307,8 @@ static int get_remaining_time(uint32_t sample, uint32_t *time_in_ms, int *stop_i | |||
static void *polling_thread(void *p) | |||
{ | |||
(void)p; // unused | |||
while (1) { | |||
int a_stop_is_required = 0; | |||
@@ -246,6 +246,8 @@ static void close_stream() | |||
static void *say_thread(void *p) | |||
{ | |||
(void)p; // unused | |||
// announce that thread is started | |||
sem_post(&my_sem_stop_is_acknowledged); | |||
@@ -423,7 +423,7 @@ static int CountUnstressed(int start, int end, int limit) | |||
return ix - start; | |||
} | |||
static int SetHeadIntonation(TUNE *tune, int syl_ix, int end_ix, int control) | |||
static int SetHeadIntonation(TUNE *tune, int syl_ix, int end_ix) | |||
{ | |||
int stress; | |||
SYLLABLE *syl; | |||
@@ -697,7 +697,7 @@ static int calc_pitches2(int start, int end, int tune_number) | |||
if (option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE) | |||
tone_posn = tone_posn2; // put tone on the penultimate stressed word | |||
ix = SetHeadIntonation(tune, ix, tone_posn, 0); | |||
ix = SetHeadIntonation(tune, ix, tone_posn); | |||
if (no_tonic) | |||
return 0; | |||
@@ -784,10 +784,8 @@ static int calc_pitches(int control, int start, int end, int tune_number) | |||
return tone_pitch_env; | |||
} | |||
static void CalcPitches_Tone(Translator *tr, int clause_tone) | |||
static void CalcPitches_Tone(Translator *tr) | |||
{ | |||
// clause_tone: 0=. 1=, 2=?, 3=! 4=none | |||
PHONEME_LIST *p; | |||
int ix; | |||
int count_stressed = 0; | |||
@@ -973,7 +971,7 @@ void CalcPitches(Translator *tr, int clause_type) | |||
return; // nothing to do | |||
if (tr->langopts.tone_language == 1) { | |||
CalcPitches_Tone(tr, clause_type); | |||
CalcPitches_Tone(tr); | |||
return; | |||
} | |||
@@ -99,7 +99,9 @@ void resetError_MBR(void); | |||
/* | |||
* Tolerance to missing diphones (always active so this is ignored) | |||
*/ | |||
static inline void setNoError_MBR(int no_error) { | |||
static inline void setNoError_MBR(int no_error) | |||
{ | |||
(void)no_error; // unused | |||
} | |||
#ifdef __cplusplus |
@@ -39,7 +39,7 @@ const unsigned char pause_phonemes[8] = { | |||
extern int n_ph_list2; | |||
extern PHONEME_LIST2 ph_list2[N_PHONEME_LIST]; // first stage of text->phonemes | |||
static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out) | |||
static int SubstitutePhonemes(PHONEME_LIST *plist_out) | |||
{ | |||
// Copy the phonemes list and perform any substitutions that are required for the | |||
// current voice | |||
@@ -250,7 +250,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
} | |||
} | |||
n_ph_list3 = SubstitutePhonemes(tr, ph_list3) - 2; | |||
n_ph_list3 = SubstitutePhonemes(ph_list3) - 2; | |||
for (j = 0; (j < n_ph_list3) && (ix < N_PHONEME_LIST-3);) { | |||
if (ph_list3[j].sourceix) { |
@@ -113,7 +113,7 @@ static int dispatch_audio(short *outbuf, int length, espeak_EVENT *event) | |||
return -1; | |||
} | |||
wave_set_callback_is_output_enabled(fifo_is_command_enabled); | |||
my_audio = wave_open("alsa"); | |||
my_audio = wave_open(); | |||
event_init(); | |||
} | |||
} | |||
@@ -150,7 +150,7 @@ static int dispatch_audio(short *outbuf, int length, espeak_EVENT *event) | |||
return a_wave_can_be_played == 0; // 1 = stop synthesis, -1 = error | |||
} | |||
static int create_events(short *outbuf, int length, espeak_EVENT *event, uint32_t the_write_pos) | |||
static int create_events(short *outbuf, int length, espeak_EVENT *event_list, uint32_t the_write_pos) | |||
{ | |||
int finished; | |||
int i = 0; | |||
@@ -398,7 +398,7 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, | |||
length = (out_ptr - outbuf)/2; | |||
count_samples += length; | |||
event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list | |||
event_list[event_list_ix].unique_identifier = my_unique_identifier; | |||
event_list[event_list_ix].unique_identifier = unique_identifier; | |||
event_list[event_list_ix].user_data = my_user_data; | |||
count_buffers++; | |||
@@ -478,6 +478,8 @@ espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, | |||
unsigned int position, espeak_POSITION_TYPE position_type, | |||
unsigned int end_position, unsigned int flags, void *user_data) | |||
{ | |||
(void)size; // unused | |||
espeak_ERROR aStatus; | |||
InitText(flags); | |||
@@ -517,6 +519,8 @@ espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void * | |||
const char *index_mark, unsigned int end_position, | |||
unsigned int flags, void *user_data) | |||
{ | |||
(void)size; // unused | |||
espeak_ERROR aStatus; | |||
InitText(flags); |
@@ -627,7 +627,7 @@ static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, | |||
return word; | |||
} | |||
static int CheckDottedAbbrev(char *word1, WORD_TAB *wtab) | |||
static int CheckDottedAbbrev(char *word1) | |||
{ | |||
int wc; | |||
int count = 0; | |||
@@ -919,7 +919,7 @@ int TranslateWord(Translator *tr, char *word_start, WORD_TAB *wtab, char *word_o | |||
if ((word_length == 1) && (dictionary_skipwords == 0)) { | |||
// is this a series of single letters separated by dots? | |||
if (CheckDottedAbbrev(word1, wtab)) { | |||
if (CheckDottedAbbrev(word1)) { | |||
dictionary_flags[0] = 0; | |||
dictionary_flags[1] = 0; | |||
spell_word = 1; |
@@ -267,7 +267,7 @@ void ReadTonePoints(char *string, int *tone_pts) | |||
&tone_pts[8], &tone_pts[9]); | |||
} | |||
static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char *leafname) | |||
static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname) | |||
{ | |||
// Read a Voice file, allocate a VOICE_DATA and set data from the | |||
// file's language, gender, name lines | |||
@@ -450,7 +450,7 @@ static void VoiceFormant(char *p) | |||
voice->freqadd[formant] = freqadd; | |||
} | |||
static void PhonemeReplacement(int type, char *p) | |||
static void PhonemeReplacement(char *p) | |||
{ | |||
int n; | |||
int phon; | |||
@@ -785,7 +785,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
SelectPhonemeTableName(phonemes_name); | |||
phonemes_set = 1; | |||
} | |||
PhonemeReplacement(key, p); | |||
PhonemeReplacement(p); | |||
break; | |||
case V_WORDGAP: // words | |||
sscanf(p, "%d %d", &langopts->word_gap, &langopts->vowel_pause); | |||
@@ -1457,7 +1457,7 @@ static void GetVoices(const char *path) | |||
continue; | |||
// pass voice file name within the voices directory | |||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices); | |||
fclose(f_voice); | |||
if (voice_data != NULL) | |||
@@ -1493,7 +1493,7 @@ static void GetVoices(const char *path) | |||
continue; | |||
// pass voice file name within the voices directory | |||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, ent->d_name); | |||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices); | |||
fclose(f_voice); | |||
if (voice_data != NULL) |
@@ -70,7 +70,7 @@ static int pulse_running; | |||
// wave.cpp (this file) | |||
int wave_port_init(int); | |||
void *wave_port_open(const char *the_api); | |||
void *wave_port_open(); | |||
size_t wave_port_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize); | |||
int wave_port_close(void *theHandler); | |||
int wave_port_is_busy(void *theHandler); | |||
@@ -85,7 +85,7 @@ int wave_port_get_remaining_time(uint32_t sample, uint32_t *time); | |||
// wave_pulse.cpp | |||
int is_pulse_running(); | |||
int wave_pulse_init(int); | |||
void *wave_pulse_open(const char *the_api); | |||
void *wave_pulse_open(); | |||
size_t wave_pulse_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize); | |||
int wave_pulse_close(void *theHandler); | |||
int wave_pulse_is_busy(void *theHandler); | |||
@@ -108,12 +108,12 @@ int wave_init(int srate) | |||
return wave_port_init(srate); | |||
} | |||
void *wave_open(const char *the_api) | |||
void *wave_open() | |||
{ | |||
if (pulse_running) | |||
return wave_pulse_open(the_api); | |||
return wave_pulse_open(); | |||
else | |||
return wave_port_open(the_api); | |||
return wave_port_open(); | |||
} | |||
size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize) | |||
@@ -307,6 +307,10 @@ static int pa_callback(const void *inputBuffer, void *outputBuffer, | |||
PaStreamCallbackFlags flags, void *userData) | |||
#endif | |||
{ | |||
(void)inputBuffer; // unused | |||
(void)outTime; // unused | |||
(void)userData; // unused | |||
int aResult = 0; // paContinue | |||
char *aWrite = myWrite; | |||
size_t n = out_channels*sizeof(uint16_t)*framesPerBuffer; | |||
@@ -383,6 +387,8 @@ static int pa_callback(const void *inputBuffer, void *outputBuffer, | |||
void wave_flush(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
if (my_stream_could_start) | |||
start_stream(); | |||
} | |||
@@ -506,7 +512,7 @@ static void update_output_parameters(int selectedDevice, const PaDeviceInfo *dev | |||
} | |||
#endif | |||
static void select_device(const char *the_api) | |||
static void select_device() | |||
{ | |||
#if (USE_PORTAUDIO == 19) | |||
int numDevices = Pa_GetDeviceCount(); | |||
@@ -590,12 +596,12 @@ int wave_init(int srate) | |||
return err == paNoError; | |||
} | |||
void *wave_open(const char *the_api) | |||
void *wave_open() | |||
{ | |||
static int once = 0; | |||
if (!once) { | |||
select_device("alsa"); | |||
select_device(); | |||
once = 1; | |||
} | |||
return (void *)1; | |||
@@ -631,6 +637,8 @@ static size_t copyBuffer(char *dest, char *src, const size_t theSizeInBytes) | |||
size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize) | |||
{ | |||
(void)theHandler; // unused | |||
size_t bytes_written = 0; | |||
// space in ringbuffer for the sample needed: 1x mono channel but 2x for 1 stereo channel | |||
size_t bytes_to_write = (out_channels == 1) ? theSize : theSize*2; | |||
@@ -712,6 +720,8 @@ size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSiz | |||
int wave_close(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
static int aStopStreamCount = 0; | |||
#if (USE_PORTAUDIO == 19) | |||
@@ -790,6 +800,8 @@ int wave_close(void *theHandler) | |||
int wave_is_busy(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
PaError active = 0; | |||
if (pa_stream) { | |||
@@ -812,11 +824,15 @@ void wave_terminate() | |||
uint32_t wave_get_read_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return myReadPosition; | |||
} | |||
uint32_t wave_get_write_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return myWritePosition; | |||
} | |||
@@ -848,26 +864,35 @@ void *wave_test_get_write_buffer() | |||
int wave_init(int srate) | |||
{ | |||
(void)srate; // unused | |||
return 1; | |||
} | |||
void *wave_open(const char *the_api) | |||
void *wave_open() | |||
{ | |||
return (void *)1; | |||
} | |||
size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize) | |||
{ | |||
(void)theHandler; // unused | |||
(void)theMono16BitsWaveBuffer; // unused | |||
return theSize; | |||
} | |||
int wave_close(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
int wave_is_busy(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
@@ -877,22 +902,28 @@ void wave_terminate() | |||
uint32_t wave_get_read_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
uint32_t wave_get_write_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
void wave_flush(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
} | |||
typedef int (t_wave_callback)(void); | |||
void wave_set_callback_is_output_enabled(t_wave_callback *cb) | |||
{ | |||
(void)cb; // unused | |||
} | |||
extern void *wave_test_get_write_buffer() | |||
@@ -902,6 +933,8 @@ extern void *wave_test_get_write_buffer() | |||
int wave_get_remaining_time(uint32_t sample, uint32_t *time) | |||
{ | |||
(void)sample; // unused | |||
if (!time) return -1; | |||
*time = (uint32_t)0; | |||
return 0; |
@@ -32,7 +32,7 @@ extern "C" | |||
extern int option_device_number; | |||
extern int wave_init(int samplerate); | |||
extern void *wave_open(const char *the_api); | |||
extern void *wave_open(); | |||
extern size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize); | |||
extern int wave_close(void *theHandler); |
@@ -140,6 +140,8 @@ static int wave_samplerate; | |||
static void subscribe_cb(struct pa_context *c, enum pa_subscription_event_type t, uint32_t index, void *userdata) | |||
{ | |||
(void)userdata; // unused | |||
assert(c); | |||
if (!stream || | |||
@@ -151,6 +153,8 @@ static void subscribe_cb(struct pa_context *c, enum pa_subscription_event_type t | |||
static void context_state_cb(pa_context *c, void *userdata) | |||
{ | |||
(void)userdata; // unused | |||
assert(c); | |||
switch (pa_context_get_state(c)) | |||
@@ -170,6 +174,8 @@ static void context_state_cb(pa_context *c, void *userdata) | |||
static void stream_state_cb(pa_stream *s, void *userdata) | |||
{ | |||
(void)userdata; // unused | |||
assert(s); | |||
switch (pa_stream_get_state(s)) | |||
@@ -207,6 +213,9 @@ static void context_success_cb(pa_context *c, int success, void *userdata) | |||
static void stream_request_cb(pa_stream *s, size_t length, void *userdata) | |||
{ | |||
(void)length; // unused | |||
(void)userdata; // unused | |||
assert(s); | |||
pa_threaded_mainloop_signal(mainloop, 0); | |||
@@ -214,6 +223,8 @@ static void stream_request_cb(pa_stream *s, size_t length, void *userdata) | |||
static void stream_latency_update_cb(pa_stream *s, void *userdata) | |||
{ | |||
(void)userdata; // unused | |||
assert(s); | |||
pa_threaded_mainloop_signal(mainloop, 0); | |||
@@ -507,6 +518,7 @@ fail: | |||
void wave_flush(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
} | |||
void wave_set_callback_is_output_enabled(t_wave_callback *cb) | |||
@@ -522,13 +534,15 @@ int wave_init(int srate) | |||
return pulse_open() == PULSE_OK; | |||
} | |||
void *wave_open(const char *the_api) | |||
void *wave_open() | |||
{ | |||
return (void *)1; | |||
} | |||
size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize) | |||
{ | |||
(void)theHandler; // unused | |||
size_t bytes_to_write = theSize; | |||
char *aBuffer = theMono16BitsWaveBuffer; | |||
@@ -571,6 +585,8 @@ terminate: | |||
int wave_close(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
static int aStopStreamCount = 0; | |||
// Avoid race condition by making sure this function only | |||
@@ -595,6 +611,8 @@ int wave_close(void *theHandler) | |||
int wave_is_busy(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
pa_timing_info a_timing_info; | |||
int active = pulse_playing(&a_timing_info); | |||
return active; | |||
@@ -614,6 +632,8 @@ void wave_terminate() | |||
uint32_t wave_get_read_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
pa_timing_info a_timing_info; | |||
pulse_playing(&a_timing_info); | |||
return a_timing_info.read_index; | |||
@@ -621,6 +641,8 @@ uint32_t wave_get_read_position(void *theHandler) | |||
uint32_t wave_get_write_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
pa_timing_info a_timing_info; | |||
pulse_playing(&a_timing_info); | |||
return a_timing_info.write_index; | |||
@@ -657,26 +679,35 @@ void *wave_test_get_write_buffer() | |||
int wave_init(int srate) | |||
{ | |||
(void)srate; // unused | |||
return 1; | |||
} | |||
void *wave_open(const char *the_api) | |||
void *wave_open() | |||
{ | |||
return (void *)1; | |||
} | |||
size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize) | |||
{ | |||
(void)theHandler; // unused | |||
(void)theMono16BitsWaveBuffer; // unused | |||
return theSize; | |||
} | |||
int wave_close(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
int wave_is_busy(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
@@ -686,22 +717,28 @@ void wave_terminate() | |||
uint32_t wave_get_read_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
uint32_t wave_get_write_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
void wave_flush(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
} | |||
typedef int (t_wave_callback)(void); | |||
void wave_set_callback_is_output_enabled(t_wave_callback *cb) | |||
{ | |||
(void)cb; // unused | |||
} | |||
extern void *wave_test_get_write_buffer() | |||
@@ -711,6 +748,8 @@ extern void *wave_test_get_write_buffer() | |||
int wave_get_remaining_time(uint32_t sample, uint32_t *time) | |||
{ | |||
(void)sample; // unused | |||
if (!time) return -1; | |||
*time = (uint32_t)0; | |||
return 0; |
@@ -117,15 +117,10 @@ int wave_init(int srate) | |||
// | |||
// DESCRIPTION: | |||
// | |||
// opens the audio subsystem given a specific API (e.g., "alsa", | |||
// "oss", ...). We ignore the_api and just return the sun_audio_fd we | |||
// opens the audio subsystem. We just return the sun_audio_fd we | |||
// opened in wave_init. This return value will be passed in as the | |||
// theHandler parameter in all other methods. | |||
// | |||
// PARAMETERS: | |||
// | |||
// the_api: "alsa", "oss" (ignored) | |||
// | |||
// GLOBALS USED/MODIFIED: | |||
// | |||
// sun_audio_fd: used as return value | |||
@@ -135,7 +130,7 @@ int wave_init(int srate) | |||
// sun_audio_fd opened in wave_init, which is passed in as theHandler | |||
// parameter in all other methods | |||
// | |||
void *wave_open(const char *the_api) | |||
void *wave_open() | |||
{ | |||
return (void *)sun_audio_fd; | |||
} | |||
@@ -271,6 +266,8 @@ int wave_close(void *theHandler) | |||
// | |||
int wave_is_busy(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
uint32_t time; | |||
if (total_samples_sent >= 1) | |||
wave_get_remaining_time(total_samples_sent - 1, &time); | |||
@@ -312,6 +309,7 @@ void wave_terminate() | |||
// | |||
void wave_flush(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
} | |||
// wave_set_callback_is_output_enabled | |||
@@ -401,6 +399,8 @@ uint32_t wave_get_read_position(void *theHandler) | |||
// | |||
uint32_t wave_get_write_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return total_samples_sent; | |||
} | |||
@@ -460,26 +460,35 @@ int wave_get_remaining_time(uint32_t sample, uint32_t *time) | |||
int wave_init(int srate) | |||
{ | |||
(void)srate; // unused | |||
return 1; | |||
} | |||
void *wave_open(const char *the_api) | |||
void *wave_open() | |||
{ | |||
return (void *)1; | |||
} | |||
size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize) | |||
{ | |||
(void)theHandler; // unused | |||
(void)theMono16BitsWaveBuffer; // unused | |||
return theSize; | |||
} | |||
int wave_close(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
int wave_is_busy(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
@@ -489,22 +498,28 @@ void wave_terminate() | |||
uint32_t wave_get_read_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
uint32_t wave_get_write_position(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
return 0; | |||
} | |||
void wave_flush(void *theHandler) | |||
{ | |||
(void)theHandler; // unused | |||
} | |||
typedef int (t_wave_callback)(void); | |||
void wave_set_callback_is_output_enabled(t_wave_callback *cb) | |||
{ | |||
(void)cb; // unused | |||
} | |||
extern void *wave_test_get_write_buffer() | |||
@@ -514,6 +529,8 @@ extern void *wave_test_get_write_buffer() | |||
int wave_get_remaining_time(uint32_t sample, uint32_t *time) | |||
{ | |||
(void)sample; // unused | |||
if (!time) return -1; | |||
*time = (uint32_t)0; | |||
return 0; |
@@ -366,6 +366,10 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
PaStreamCallbackFlags flags, void *userData) | |||
#endif | |||
{ | |||
(void)inputBuffer; // unused | |||
(void)outTime; // unused | |||
(void)userData; // unused | |||
int ix; | |||
int result; | |||
unsigned char *p; |
@@ -286,6 +286,8 @@ static int WavegenFile(void) | |||
static void init_path(char *argv0, char *path_specified) | |||
{ | |||
(void)argv0; // unused (except with PLATFORM_WINDOWS) | |||
if (path_specified) { | |||
sprintf(path_home, "%s/espeak-data", path_specified); | |||
return; |