On Tue, 20.01.09 02:21, Aleksander Kamenik (aleksander at krediidiinfo.ee) wrote: > > Lennart Poettering wrote: > > On Tue, 20.01.09 00:45, Aleksander Kamenik (aleksander at krediidiinfo.ee) wrote: > > > >>> One thing you might try before you file that bug is commenting the > >>> invocation of snd_pcm_hw_params_set_periods_integer() in that > >>> function, recompiling and testing whether that changes the behaviour. > >> I guess your idea was to include a goto finish; right before the > >> problematic code with snd_pcm_hw_params_set_periods_near() by commenting > >> the 'if ((ret = snd_pcm_hw_params_set_periods_integer(pcm_handle, > >> hwparams)) < 0)' line? > > > > No, my idea was to comment the two lines that deal with > > snd_pcm_hw_params_set_periods_integer(), as I said. > > > > i.e., comment these two lines: > > > > <snip> > > if ((ret = snd_pcm_hw_params_set_periods_integer(pcm_handle, hwparams)) < 0) > > goto finish; > > </snip> > > Oh, that's how I understood it at the beginning and tried it. This > didn't do anything at all, cause the comparison fails and goto finish; > is not executed. I got exactly the same errors at the same place when > running gdb. And the same behaviour. Of course I might have missed > something, but it looked exactly like my previous run with the original > code. That's why I thought you meant something else. OK, if that minimal change doesn't really change anything, then please file a bug against ALSA as mentioned. > > > > >> However I also tried commenting out the > >> snd_pcm_hw_params_set_periods_near() function calls. Thanks to this my > >> USB sound card popped up in the pulse audio volume control. My > >> integrated nvidia chip worked. > > > > Ah, that's interesting. Apparently your sound card does not support > > integral number of periods. Weird thing. Could you please paste the > > output of "pulseaudio -vvvv" with that minimal commenting change made? > > Right. Starting up pulseaudio with this patch: > > diff -Naur pulseaudio-0.9.14/src/modules/alsa-util.c > pulseaudio-0.9.14.changed/src/modules/alsa-util.c > --- pulseaudio-0.9.14/src/modules/alsa-util.c 2009-01-13 > 01:11:38.000000000 +0200 > +++ pulseaudio-0.9.14.changed/src/modules/alsa-util.c 2009-01-20 > 00:25:46.000000000 +0200 > @@ -369,11 +369,11 @@ > > if ((ret = snd_pcm_hw_params_set_periods_integer(pcm_handle, > hwparams)) < 0) > goto finish; > - > +/* > if (_periods > 0) { > > - /* First we pass 0 as direction to get exactly what we asked > - * for. That this is necessary is presumably a bug in ALSA */ > + * First we pass 0 as direction to get exactly what we asked > + * for. That this is necessary is presumably a bug in ALSA * > > dir = 0; > if ((ret = snd_pcm_hw_params_set_periods_near(pcm_handle, > hwparams, &_periods, &dir)) < 0) { > @@ -385,7 +385,7 @@ > } > } > } > - > +*/ > if (_period_size > 0) > if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, > hwparams, &buffer_size)) < 0) > goto finish; > > Result: > > http://pastebin.com/m5eb3e962 No, this patch is a bit too intrusive. We need to set the buffer/period settings. On your setup ALSA refuses that in every way so we this should be considered a bug in ALSA. Lennart -- Lennart Poettering Red Hat, Inc. lennart [at] poettering [dot] net ICQ# 11060553 http://0pointer.net/lennart/ GnuPG 0x1A015CC4