[alsa-devel] How to report error in _pointer function?
Takashi Iwai
tiwai at suse.de
Thu Aug 7 18:29:38 CEST 2008
At Wed, 06 Aug 2008 16:54:38 -0500,
Timur Tabi wrote:
>
> Takashi Iwai wrote:
>
> > You can return SNDRV_PCM_POS_XRUN from the pointer callback (with
> > kernel messages if you like). Then the PCM stream is stopped and the
> > status is changed to SND_PCM_STATUS_XRUN. Further access will result
> > in -EPIPE.
>
> This doesn't seem to work. I don't get any more underrun/overrun messages, but
> the application doesn't know that something's failed.
>
> With mplayer, I see this message:
>
> alsa-lib: pcm_hw.c:405:(snd_pcm_hw_hwsync) SNDRV_PCM_IOCTL_HWSYNC failed: Broken
> pipe
>
> And then mplayer hangs with the status bar here:
>
> A: 0.0 (00.0) of 249.0 (04:09.0) ??,?% $<50>
>
> aplay just hangs.
Hm... The behavior with returning SNDRV_PCM_POS_XRUN is basically
identical with the real XRUN detection. I guess the XRUN-stop
mechanism doesn't work well with the case of hwsync.
How is the PCM status during hang? Check
/proc/asound/card0/pcm*/sub*/* files.
Also, could you run with gdb and check at which code-path is it
stopped?
thanks,
Takashi
More information about the Alsa-devel
mailing list