Re: [Alsa-devel] problems: flushing during snd_pcm_wait()
On Fri, 11 Oct 2002, James Courtier-Dutton wrote: Thankyou, I will use snd_pcm_drop(), but as a side note, what actually does snd_pcm_reset() do. Just resetting delay to 0 does not make much sense to me. It drops all samples in the ring buffer (thus reseting delay to 0). Note that everybody are welcome to improve the current documentation (preferably with patches). Jaroslav Ok, so snd_pcm_drop drops all samples in the buffer, so I would assume this sets the delay to 0. so snd_pcm_reset drops all sample in the buffer, so as you say is sets delay to 0. So my question is What is the difference between the 2 functions? reset() doesn't stop the stream. It's mainly useable, if you have streams linked together with hardware or if an application wants to act very realtime and has xrun detection disabled. Jaroslav - Jaroslav Kysela [EMAIL PROTECTED] Linux Kernel Sound Maintainer ALSA Project http://www.alsa-project.org SuSE Linuxhttp://www.suse.com --- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf ___ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel
Re: [Alsa-devel] problems: flushing during snd_pcm_wait()
Thankyou, I will use snd_pcm_drop(), but as a side note, what actually does snd_pcm_reset() do. Just resetting delay to 0 does not make much sense to me. It drops all samples in the ring buffer (thus reseting delay to 0). Note that everybody are welcome to improve the current documentation (preferably with patches). Jaroslav Ok, so snd_pcm_drop drops all samples in the buffer, so I would assume this sets the delay to 0. so snd_pcm_reset drops all sample in the buffer, so as you say is sets delay to 0. So my question is What is the difference between the 2 functions? Cheers James --- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf ___ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel
[Alsa-devel] problems: flushing during snd_pcm_wait()
Hello I have an application that has many different threads. The sound card's PCM buffer is full during playback, and one thread is currently in snd_pcm_wait() waiting for enough space to appear in the buffer before doing the next snd_pcm_write(). A different thread wants to flush the buffer. There are two types of flush: - 1) Immeadiately empty the buffer. 2) Stop accepting snd_pcm_write() commands until the current buffer has drained. Can someone please tell me which API calls I should make to get the buffer to flush properly. I am currently doing things like: - int flush() { snip... if ((result=snd_pcm_reset(this-audio_fd)) 0) { printf(audio_alsa_out: Reset call failed err=%d\n,result); } if ((result=snd_pcm_drain(this-audio_fd)) 0) { printf(audio_alsa_out: Drain call failed err=%d\n,result); } if ((result=snd_pcm_prepare(this-audio_fd)) 0) { printf(audio_alsa_out: Prepare call failed err=%d\n,result); } } But this is causing all sorts of problems, one of which is that the application hangs, and has to be killed with -9, and the audio hardware ring buffer is left playing a repeated sound even with: - /proc/asound/card0/pcm0p/sub0# cat status closed Cheers James --- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf ___ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel