Browse Source

Make Synthesize return an espeak_ng_STATUS code.

master
Reece H. Dunn 9 years ago
parent
commit
bf6f6f093f
2 changed files with 11 additions and 11 deletions
  1. 2
    0
      src/include/espeak-ng/espeak_ng.h
  2. 9
    11
      src/libespeak-ng/speech.c

+ 2
- 0
src/include/espeak-ng/espeak_ng.h View File

ENS_COMPILE_ERROR = 0x100001FF, ENS_COMPILE_ERROR = 0x100001FF,
ENS_VERSION_MISMATCH = 0x100002FF, ENS_VERSION_MISMATCH = 0x100002FF,
ENS_FIFO_BUFFER_FULL = 0x100003FF, ENS_FIFO_BUFFER_FULL = 0x100003FF,
ENS_NOT_INITIALIZED = 0x100004FF,
ENS_AUDIO_ERROR = 0x100005FF,
} espeak_ng_STATUS; } espeak_ng_STATUS;


typedef enum { typedef enum {

+ 9
- 11
src/libespeak-ng/speech.c View File

} }
#pragma GCC visibility pop #pragma GCC visibility pop


static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, int flags)
static espeak_ng_STATUS Synthesize(unsigned int unique_identifier, const void *text, int flags)
{ {
// Fill the buffer with output sound // Fill the buffer with output sound
int length; int length;
#endif #endif


if ((outbuf == NULL) || (event_list == NULL)) if ((outbuf == NULL) || (event_list == NULL))
return EE_INTERNAL_ERROR; // espeak_Initialize() has not been called
return ENS_NOT_INITIALIZED;


option_multibyte = flags & 7; option_multibyte = flags & 7;
option_ssml = flags & espeakSSML; option_ssml = flags & espeakSSML;
if (SynthOnTimer() != 0) if (SynthOnTimer() != 0)
break; break;
} }
return EE_OK;
return ENS_OK;
} }


for (;;) { for (;;) {
#ifdef USE_ASYNC #ifdef USE_ASYNC
finished = create_events((short *)outbuf, length, event_list, a_write_pos); finished = create_events((short *)outbuf, length, event_list, a_write_pos);
if (finished < 0) if (finished < 0)
return EE_INTERNAL_ERROR;
return ENS_AUDIO_ERROR;
length = 0; // the wave data are played once. length = 0; // the wave data are played once.
#endif #endif
} else } else
if (SpeakNextClause(NULL, NULL, 1) == 0) { if (SpeakNextClause(NULL, NULL, 1) == 0) {
#ifdef USE_ASYNC #ifdef USE_ASYNC
if (my_mode == ENOUTPUT_MODE_SPEAK_AUDIO) { if (my_mode == ENOUTPUT_MODE_SPEAK_AUDIO) {
if (dispatch_audio(NULL, 0, NULL) < 0) // TBD: test case
return err = EE_INTERNAL_ERROR;
if (dispatch_audio(NULL, 0, NULL) < 0)
return ENS_AUDIO_ERROR;
} else } else
synth_callback(NULL, 0, event_list); // NULL buffer ptr indicates end of data synth_callback(NULL, 0, event_list); // NULL buffer ptr indicates end of data
#else #else
} }
} }
} }
return EE_OK;
return ENS_OK;
} }


void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr) void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr)
unsigned int position, espeak_POSITION_TYPE position_type, unsigned int position, espeak_POSITION_TYPE position_type,
unsigned int end_position, unsigned int flags, void *user_data) unsigned int end_position, unsigned int flags, void *user_data)
{ {
espeak_ERROR aStatus;

InitText(flags); InitText(flags);
my_unique_identifier = unique_identifier; my_unique_identifier = unique_identifier;
my_user_data = user_data; my_user_data = user_data;


end_character_position = end_position; end_character_position = end_position;


aStatus = Synthesize(unique_identifier, text, flags);
espeak_ERROR aStatus = status_to_espeak_error(Synthesize(unique_identifier, text, flags));
#ifdef USE_ASYNC #ifdef USE_ASYNC
wave_flush(my_audio); wave_flush(my_audio);
#endif #endif


end_character_position = end_position; end_character_position = end_position;


return Synthesize(unique_identifier, text, flags | espeakSSML);
return status_to_espeak_error(Synthesize(unique_identifier, text, flags | espeakSSML));
} }


void sync_espeak_Key(const char *key) void sync_espeak_Key(const char *key)

Loading…
Cancel
Save