Re: How to report error in _pointer function?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

I also tried adding this code to my _pointer function:

	snd_pcm_stream_lock_irqsave(substream, flags);

	if (snd_pcm_running(substream))
		snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);

	snd_pcm_stream_unlock_irqrestore(substream, flags);

but it didn't make any difference.

-- 
Timur Tabi
Linux kernel developer at Freescale
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux