[alsa-devel] [Pkg-alsa-devel] Bug#438118: alsa-utils: aplay non-blocking mode isn't working
tiwai at suse.de
Tue Oct 9 12:38:12 CEST 2007
At Thu, 27 Sep 2007 14:16:29 +0200 (CEST),
Anders Boström wrote:
> >>>>> "TI" == Takashi Iwai <tiwai at suse.de> writes:
> TI> At Tue, 18 Sep 2007 09:41:48 +0200 (CEST),
> TI> Anders Boström wrote:
> >> >>>>> "TI" == Takashi Iwai <tiwai at suse.de> writes:
> >> >> can one please have a lokk at this? aplay -N isn't working for the
> >> >> OP.
> TI> Cannot reproduce here. Could you _post_ more details?
> >> OK, I've tested more, and discovered that the problem seems to be that
> >> the end of the sound is cut in non-blocking mode. And if I play a very
> >> short sound-file, I can't hear anything. Blocking mode works fine.
> >> When using non-blocking mode, an strace contains "ioctl(4, 0x4144,
> >> 0x2b9f785d8000) = -1 EAGAIN (Resource temporarily
> >> unavailable)". Blocking mode never contains the EAGAIN response.
> >> I attach two files. When playing halt.au, I can only hear the start,
> >> about as much as "ha". When playing metal.au, I can't hear anything.
> TI> OK, thanks, I see the problem now.
> TI> I don't remember whether it's a feature or a bug. The drain ioctl
> TI> rejects the non-block mode.
> I can understand the idea here, that in non-blocking mode, no call
> should block, ever. But on the other hand, if you call the drain
> ioctl, you probably expect it to work, even in non-blocking mode. Why
> would you otherwise call it?
Yes, that's my opinion, too. This particular ioctl is to block the
operation, so it should be allowed as long as it's called.
But I vaguely remember that we discussed about it, and the current
form is the result of that. Namely, we can call
snd_pcm_nonblock(FALSE) explicitly before calling snd_pcm_drain().
Though, I prefer fixing the behavior in the core side to allow the
blocking with this call... Any reasonable objections in mind?
More information about the Alsa-devel