Browse Source

Merge remote-tracking branch 'sthibaul/audio_reopen'

master
Reece H. Dunn 7 years ago
parent
commit
0be3cbde76
1 changed files with 14 additions and 1 deletions
  1. 14
    1
      src/libespeak-ng/speech.c

+ 14
- 1
src/libespeak-ng/speech.c View File

@@ -123,12 +123,12 @@ static int dispatch_audio(short *outbuf, int length, espeak_EVENT *event)
if (out_samplerate != 0) {
// sound was previously open with a different sample rate
audio_object_close(my_audio);
out_samplerate = 0;
#ifdef HAVE_SLEEP
sleep(1);
#endif
}
#endif
out_samplerate = voice_samplerate;
#ifdef HAVE_PCAUDIOLIB_AUDIO_H
int error = audio_object_open(my_audio, AUDIO_OBJECT_FORMAT_S16LE, voice_samplerate, 1);
if (error != 0) {
@@ -137,6 +137,7 @@ static int dispatch_audio(short *outbuf, int length, espeak_EVENT *event)
return -1;
}
#endif
out_samplerate = voice_samplerate;
#ifdef USE_ASYNC
if ((my_mode & ENOUTPUT_MODE_SYNCHRONOUS) == 0)
event_init();
@@ -144,6 +145,18 @@ static int dispatch_audio(short *outbuf, int length, espeak_EVENT *event)
}
}

#ifdef HAVE_PCAUDIOLIB_AUDIO_H
if (out_samplerate == 0) {
int error = audio_object_open(my_audio, AUDIO_OBJECT_FORMAT_S16LE, voice_samplerate, 1);
if (error != 0) {
fprintf(stderr, "error: %s\n", audio_object_strerror(my_audio, error));
err = ENS_AUDIO_ERROR;
return -1;
}
out_samplerate = voice_samplerate;
}
#endif

#ifdef HAVE_PCAUDIOLIB_AUDIO_H
if (outbuf && length && a_wave_can_be_played) {
int error = audio_object_write(my_audio, (char *)outbuf, 2*length);

Loading…
Cancel
Save