|
|
|
|
|
|
|
|
if (out_samplerate != 0) { |
|
|
if (out_samplerate != 0) { |
|
|
// sound was previously open with a different sample rate |
|
|
// sound was previously open with a different sample rate |
|
|
audio_object_close(my_audio); |
|
|
audio_object_close(my_audio); |
|
|
|
|
|
out_samplerate = 0; |
|
|
#ifdef HAVE_SLEEP |
|
|
#ifdef HAVE_SLEEP |
|
|
sleep(1); |
|
|
sleep(1); |
|
|
#endif |
|
|
#endif |
|
|
} |
|
|
} |
|
|
#endif |
|
|
#endif |
|
|
out_samplerate = voice_samplerate; |
|
|
|
|
|
#ifdef HAVE_PCAUDIOLIB_AUDIO_H |
|
|
#ifdef HAVE_PCAUDIOLIB_AUDIO_H |
|
|
int error = audio_object_open(my_audio, AUDIO_OBJECT_FORMAT_S16LE, voice_samplerate, 1); |
|
|
int error = audio_object_open(my_audio, AUDIO_OBJECT_FORMAT_S16LE, voice_samplerate, 1); |
|
|
if (error != 0) { |
|
|
if (error != 0) { |
|
|
|
|
|
|
|
|
return -1; |
|
|
return -1; |
|
|
} |
|
|
} |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
out_samplerate = voice_samplerate; |
|
|
#ifdef USE_ASYNC |
|
|
#ifdef USE_ASYNC |
|
|
if ((my_mode & ENOUTPUT_MODE_SYNCHRONOUS) == 0) |
|
|
if ((my_mode & ENOUTPUT_MODE_SYNCHRONOUS) == 0) |
|
|
event_init(); |
|
|
event_init(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#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 |
|
|
#ifdef HAVE_PCAUDIOLIB_AUDIO_H |
|
|
if (outbuf && length && a_wave_can_be_played) { |
|
|
if (outbuf && length && a_wave_can_be_played) { |
|
|
int error = audio_object_write(my_audio, (char *)outbuf, 2*length); |
|
|
int error = audio_object_write(my_audio, (char *)outbuf, 2*length); |