Package: espeak
Version: 1.44.05-1
Severity: normal

I tried your advice with espeak 1.44.05-1.

I suggest you adopt the following patch, or else a modification of
espeak-data/config/pa_device is ignored.

-----------------------------------------------
@@ -496,7 +496,8 @@ void LoadConfig(void)
                else
                if(memcmp(buf,"pa_device",9)==0)
                {
-                       sscanf(&buf[7],"%d",&option_device_number);
+                       sscanf(&buf[10],"%d",&option_device_number);
                }
                else
                if(memcmp(buf,"soundicon",9)==0)
-----------------------------------------------

Then, with espeak-data/config/pa_device set to 0 then 1,2,3,7, I got the
same following result with each value. At least the alsa device is
selected, and the message makes sense.

-----------------------------------------------
Expression 'SetApproximateSampleRate( pcm, hwParams, sr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1293
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, 
self->primeBuffers, hwParamsPlayback, &realSr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1867
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, 
sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode 
)' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1988
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Expression 'SetApproximateSampleRate( pcm, hwParams, sr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1293
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, 
self->primeBuffers, hwParamsPlayback, &realSr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1867
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, 
sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode 
)' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1988
Expression 'SetApproximateSampleRate( pcm, hwParams, sr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1293
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, 
self->primeBuffers, hwParamsPlayback, &realSr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1867
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, 
sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode 
)' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1988
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Expression 'SetApproximateSampleRate( pcm, hwParams, sr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1293
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, 
self->primeBuffers, hwParamsPlayback, &realSr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1867
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, 
sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode 
)' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1988
Expression 'SetApproximateSampleRate( pcm, hwParams, sr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1293
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, 
self->primeBuffers, hwParamsPlayback, &realSr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1867
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, 
sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode 
)' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1988
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Expression 'SetApproximateSampleRate( pcm, hwParams, sr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1293
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, 
self->primeBuffers, hwParamsPlayback, &realSr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1867
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, 
sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode 
)' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1988
Expression 'SetApproximateSampleRate( pcm, hwParams, sr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1293
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, 
self->primeBuffers, hwParamsPlayback, &realSr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1867
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, 
sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode 
)' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1988
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Expression 'SetApproximateSampleRate( pcm, hwParams, sr )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1293
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, 
self->primeBuffers, hwParamsPlayback, &realSr )' failed in '
-----------------------------------------------

For information, with this modification of src/wave.cpp

-----------------------------------------------
--- a/src/wave.cpp
+++ b/src/wave.cpp
@@ -568,6 +568,44 @@ static void select_device(const char* the_api)
                update_output_parameters(i, deviceInfo);
        }
 
+
+       printf ("\n\n");
+
+       printf ("option_device_number = %d\n", option_device_number);
+       printf ("Pa_GetVersion: %d\n", Pa_GetVersion ());
+       printf ("Pa_GetVersionText: %s\n", Pa_GetVersionText ());
+       printf ("Pa_GetDeviceCount = %d\n", Pa_GetDeviceCount());
+
+       { const PaHostApiIndex apicount = Pa_GetHostApiCount ();
+         if (apicount < 0) {
+           printf ("Pa_GetHostApiCount: %s\n", Pa_GetErrorText (apicount)); }
+         else {
+           for (PaHostApiIndex api=0; api<apicount; api++) {
+             const PaHostApiInfo * const apiinfo = Pa_GetHostApiInfo (api);
+             printf ("HostApi %d: name=%s device_count=%d default_output=%d\n",
+                     api, apiinfo->name, apiinfo->deviceCount, 
apiinfo->defaultOutputDevice);
+             for (int apidevice=0; apidevice<apiinfo->deviceCount; 
apidevice++) {
+               printf ("  api_device %d is port_audio_device %d\n",
+                       apidevice, Pa_HostApiDeviceIndexToDeviceIndex (api, 
apidevice)); } } }}
+
+       { const PaHostApiIndex api = Pa_GetDefaultHostApi ();
+         if (api < 0) {
+           printf ("Pa_GetDefaultHostApi: %s\n", Pa_GetErrorText (api)); }
+         else {
+           printf ("Pa_GetDefaultHostApi %d\n", api); } }
+
+       { const PaDeviceIndex pa_device = Pa_GetDefaultOutputDevice ();
+         if (pa_device == paNoDevice) {
+           printf ("Pa_GetDefaultOutputDevice failed\n"); }
+         else {
+           printf ("Pa_GetDefaultOutputDevice %d\n", pa_device); } }
+
+       printf ("myOutputParameters.device: %d\n", myOutputParameters.device);
+
+       printf ("\n\n");
+
+
+
 #endif    
 }
 
-------------------------------------------------------------------------

I've got

-----------------------------------
option_device_number = -1
Pa_GetVersion: 1899
Pa_GetVersionText: PortAudio V19-devel (built Nov 25 2010)
Pa_GetDeviceCount = 8
HostApi 0: name=OSS device_count=0 default_output=-1
HostApi 1: name=ALSA device_count=8 default_output=0
  api_device 0 is port_audio_device 0
  api_device 1 is port_audio_device 1
  api_device 2 is port_audio_device 2
  api_device 3 is port_audio_device 3
  api_device 4 is port_audio_device 4
  api_device 5 is port_audio_device 5
  api_device 6 is port_audio_device 6
  api_device 7 is port_audio_device 7
Pa_GetDefaultHostApi 0
Pa_GetDefaultOutputDevice failed
myOutputParameters.device: -1


wave_open_sound > Pa_OpenStream : err=-9996 (Invalid device)
wave_open_sound > Pa_OpenStream : err=-9996 (Invalid device)
wave_open_sound > Pa_OpenStream : err=-9996 (Invalid device)
wave_open_sound > Pa_OpenStream : err=-9996 (Invalid device)
--------------------------------------

I do not understand the imbricated tests in select_device() enough to
modify anything, but I guess that it could do better than set
myOutputParameters.device=-1
when pa_device == -1 (unset in espeak-data/config)
and Pa_GetDefaultOutputDevice() == -1 (portaudio fails to select a default 
output)
but there is a default output in the default host api.
In any case, if it does not select a valid device, it should not call
Pa_OpenStream() with a -1 device afterwards.

I hope that this will help.



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to